Utilizar o DevTest Labs nos pipelines de compilação e lançamento do Azure Pipelines

Este artigo fornece informações sobre como os DevTest Labs podem ser usados nos pipelines de build e release do Azure Pipelines.

Fluxo global

O fluxo básico é ter um pipeline de build que execute as seguintes tarefas:

  1. Constrói o código da aplicação.
  2. Crie o ambiente base no DevTest Labs.
  3. Atualize o ambiente com informações personalizadas.
  4. Implementar a aplicação no ambiente DevTest Labs
  5. Testa o código.

Uma vez concluída com sucesso a compilação, o pipeline de lançamento utilizará os artefactos de compilação para implementar em pré-produção ou em produção.

Uma das premissas necessárias é que toda a informação necessária para recriar o ecossistema testado está disponível nos artefactos de compilação, incluindo a configuração dos recursos do Azure. Como os recursos do Azure têm custos quando utilizados, as empresas querem controlar ou monitorizar a utilização desses recursos. Em algumas situações, os templates do Azure Resource Manager usados para criar e configurar os recursos podem ser geridos por outro departamento, como o departamento de TI. E esses modelos podem estar armazenados num repositório diferente. Isto leva a uma situação interessante ao criar e testar uma build. Tanto o código como a configuração devem ser armazenados nos artefactos de compilação para recriar o sistema em produção.

Usando o DevTest Labs durante a fase de compilação e teste, pode adicionar templates do Azure Resource Manager e ficheiros de suporte às fontes de compilação. Durante a fase de lançamento, implementas exatamente a configuração que usaste nos testes para produção. A tarefa Create Azure DevTest Labs Environment com a configuração correta guarda os templates do Resource Manager dentro dos artefactos de compilação. Para este exemplo, usa o código do Tutorial: Constrói uma aplicação web .NET Core e SQL Database no Serviço de Aplicações do Azure, para implementar e testar a aplicação web no Azure.

Diagrama que mostra o fluxo geral.

Configurar recursos do Azure

Deve criar alguns itens antecipadamente:

  • Dois repositórios. A primeira com o código do tutorial e um template do Resource Manager com mais duas VMs. O segundo irá conter o modelo base do Azure Resource Manager (configuração existente).
  • Um Grupo de Recursos para a implementação do código de produção e configuração.
  • Um laboratório com ligação ao repositório de configuração do pipeline de compilação. Verifique o modelo de Resource Manager no repositório de configuração como azuredeploy.json com o metadata.json. Este nome permite que o DevTest Labs reconheça e implemente o template.

O pipeline de build cria um ambiente DevTest Labs e implementa o código para testes.

Configurar um pipeline de compilação

No Azure Pipelines, crie um pipeline de compilação usando o código do Tutorial: Construa um .NET Core e uma aplicação web SQL Database no Serviço de Aplicações do Azure. Use o modelo ASP.NET Core, que irá preencher a tarefa necessária para construir, testar e publicar o código.

Captura de ecrã que mostra a seleção do modelo ASP.NET.

Adicione mais três tarefas para criar o ambiente no DevTest Labs e implemente no ambiente.

Captura de ecrã que mostra um pipeline com três tarefas.

Tarefa de criar ambiente

Na tarefa Azure DevTest Labs Create Environment, utilize as listas suspensas para selecionar os seguintes valores:

  • Subscrição do Azure
  • Nome do laboratório
  • Nome do repositório
  • Nome do modelo (que mostra a pasta onde o ambiente está armazenado).

Recomendamos que utilize listas suspensas na página em vez de introduzir a informação manualmente. Se introduzires manualmente a informação, insere os IDs de Recursos do Azure totalmente qualificados. A tarefa mostra os nomes amigos em vez dos IDs dos recursos.

O nome do ambiente é o nome apresentado nos DevTest Labs. Deveria ser um nome único para cada build. Por exemplo: TestEnv$(Build.BuildId).

Pode especificar um ficheiro de parâmetros ou parâmetros para passar informação no modelo do Resource Manager.

Selecione a opção Criar variáveis de saída com base na opção de saída do modelo de ambiente e introduza um nome de referência. Para este exemplo, introduza BaseEnv como nome de referência. Usa este BaseEnv ao configurar a próxima tarefa.

Captura de ecrã que mostra a tarefa Create Azure DevTest Labs Environment.

Tarefa de povoar ambiente

A segunda tarefa (tarefa Azure DevTest Labs Populate Environment) é atualizar o ambiente DevTest Labs existente. A tarefa Criar ambiente gera o BaseEnv.environmentResourceId que é usado para configurar o nome do ambiente para esta tarefa. O modelo Resource Manager deste exemplo tem dois parâmetros - adminUserName e adminPassword.

Captura de ecrã que mostra a tarefa

Tarefa de implementação do App Service

A terceira tarefa é a tarefa Serviço de Aplicações do Azure Deploy. O tipo de aplicação está definido como Web App e o nome do App Service é definido como $(WebSite).

Captura de ecrã que mostra a tarefa App Service Deploy.

Configurar pipeline de lançamento

Cria-se um pipeline de lançamento com duas tarefas: Azure Deployment: Criar ou Atualizar Grupo de Recursos e Deploy Serviço de Aplicações do Azure.

Para a primeira tarefa, especifique o nome e a localização do grupo de recursos. A localização do modelo é um artefacto associado. Se o modelo do Resource Manager incluir modelos vinculados, tem de executar uma implementação personalizada de um grupo de recursos. O modelo está no artefacto de entrega publicado. Substitua os parâmetros do modelo no modelo do Resource Manager. Podes deixar as definições restantes com valores predefinidos.

Para a segunda tarefa, implementar o Serviço de Aplicações do Azure, especificar a subscrição do Azure, selecionar Web App para o tipo de App e $(WebSite) para o nome do App Service. Podes deixar as definições restantes com valores predefinidos.

Execução do teste

Agora que ambos os pipelines estão configurados, inicie manualmente uma compilação e veja-a em funcionamento. O passo seguinte é definir o trigger apropriado para a build e ligar a build ao pipeline de release.

Passos seguintes

Consulte os seguintes artigos: