Umbraco com CI/CD no Azure DevOps em ambiente on-premises
3 de março de 2023

Recentemente, tivemos a oportunidade de trabalhar com um grande cliente nacional do setor público. Este cliente possuía uma infraestrutura on-premises e precisava de uma solução para implementar o Umbraco 10 com integração contínua e entrega contínua (CI/CD). Devido a vários fatores, não foi possível utilizar serviços baseados na cloud, por isso optámos por usar o Azure DevOps Server, uma versão on-premises do Azure DevOps, para configurar o pipeline de CI/CD.
Implantar o Umbraco 10 num ambiente altamente restrito, onde cada detalhe é essencial e pode representar uma preocupação significativa de segurança, não é uma tarefa simples. Exige várias etapas, incluindo copiar ficheiros de uma diretoria de build para a pasta raiz do site, criar um ficheiro app_offline, eliminar ficheiros e pastas desnecessários e conceder permissões às contas IIS_IUSRS e IIS APPPOOL.
Para simplificar o processo de deployment, criámos um script em PowerShell que automatiza todos os passos necessários. O script utiliza os seguintes parâmetros:
$source: a pasta de origem que contém os ficheiros de build
$ApplicationPath: a pasta de destino para a aplicação Umbraco
$ApplicationPoolName: o nome do pool de aplicações do IIS
$FoldersToExclude: um array de pastas a excluir do processo de deployment
O script contém várias funções, incluindo:
Invoke-WithRetry: uma função que executa um comando com lógica de repetição
Copy-WebsiteFiles: uma função que copia ficheiros da diretoria de build para a pasta raiz do site
Create-AppOfflineFile: uma função que cria um ficheiro app_offline para colocar o site offline durante a manutenção
Grant-FileAccess: uma função que concede permissões a uma pasta ou ficheiro
Grant-FolderAccess: uma função que concede permissões a uma pasta e ao seu conteúdo
Delete-FilesAndFolders: uma função que elimina ficheiros e pastas desnecessários
Delete-TempFolders: uma função que elimina as pastas temporárias do Umbraco
Delete-UmbracoFolder: uma função que elimina a pasta do Umbraco e o seu conteúdo
Delete-AppOfflineFile: uma função que elimina o ficheiro app_offline para colocar o site novamente online
Testámos o script PowerShell de forma exaustiva e conseguimos fazer o deployment do Umbraco 10 com sucesso utilizando esta abordagem.
Ao automatizar o processo de deployment, conseguimos poupar tempo e reduzir o risco de erros. O script em PowerShell pode ser facilmente integrado num pipeline de release do Azure DevOps, proporcionando uma experiência de CI/CD contínua e sem interrupções.
Temos todo o gosto em partilhar o nosso script em PowerShell com a comunidade. Se estiver interessado em fazer o deployment do Umbraco 10 com CI/CD utilizando um pipeline de release do Azure DevOps, visite a nossa página de contacto para nos pedir o script e saber mais sobre como o podemos ajudar a atingir os seus objetivos.
Em conclusão, esperamos que este artigo tenha fornecido informações úteis sobre o deployment do Umbraco 10 com CI/CD usando um pipeline de release do Azure DevOps. Estamos sempre à procura de formas de melhorar os nossos processos e oferecer as melhores soluções possíveis aos nossos clientes. Se tiver alguma questão ou feedback, não hesite em entrar em contacto connosco.
--
Escrito por Marco Teodoro
Fundador & CEO, Double Shore