Planejar um pipeline de liberação usando o Azure Pipelines

Concluído

Nesta seção, você acompanhará Andy e Mara enquanto eles planejam um pipeline de CD básico que é executado no Azure Pipelines.

Quando terminar, eles demonstrarão para o resto da equipe. O pipeline servirá como um POC que eles melhorarão e expandirão à medida que aprenderem mais e receberem feedback de Tim e Amita.

Quais são as partes de um pipeline de CD básico?

Um pipeline de CD básico contém um gatilho para iniciar o processo e pelo menos um estágio, ou fase de implantação. Uma etapa é feita de empregos. Um trabalho é uma série de etapas que define como criar, testar ou implantar seu aplicativo.

Diagram that shows a hand-drawn illustration of an artifact moving to a deployment environment.

Andy: Já temos o artefato de construção. É o arquivo .zip que nosso pipeline de compilação existente cria. Mas como implantá-lo em um ambiente ao vivo?

O que é um estágio de pipeline?

Um estágio é uma parte do pipeline que pode ser executado de forma independente e ser acionado por diferentes mecanismos. Um mecanismo pode ser o sucesso da etapa anterior, um cronograma ou até mesmo um gatilho manual. Você aprenderá mais sobre esses mecanismos no próximo módulo.

Mara: Poderíamos ter uma etapa que constrói o aplicativo e outra etapa que executa testes.

Diagram that shows a hand-drawn illustration of a deployment pipeline that contains two stages, Build and Deploy.

Mara: Já definimos as tarefas para a etapa de construção em nosso pipeline. Nosso estágio de implantação pode ser semelhante, incluindo tarefas que implantam a compilação em um ambiente.

A questão é: onde devemos implantar o artefato?

O que é um ambiente?

Você provavelmente usou o termo ambiente para se referir ao local onde seu aplicativo ou serviço está sendo executado. Por exemplo, seu ambiente de produção pode ser onde os usuários finais acessam seu aplicativo.

Seguindo este exemplo, seu ambiente de produção pode ser:

  • Uma máquina física ou máquina virtual (VM).
  • Um ambiente conteinerizado, como o Kubernetes.
  • Um serviço gerenciado, como o Serviço de Aplicativo do Azure.
  • Um ambiente sem servidor, como o Azure Functions.

Um artefato é implantado em um ambiente. O Azure Pipelines facilita a implantação em praticamente qualquer tipo de ambiente, seja no local ou na nuvem.

No Azure Pipelines, o termo ambiente tem um segundo significado. Aqui, um ambiente é uma representação abstrata do seu ambiente de implantação, como um cluster Kubernetes, uma instância do Serviço de Aplicativo ou uma máquina virtual.

Um ambiente do Azure Pipelines registra o histórico de implantação para ajudá-lo a identificar a origem das alterações. Usando ambientes do Azure Pipelines, você também pode definir verificações de segurança e maneiras de controlar como um artefato é promovido de um estágio de um pipeline para outro. O que um ambiente inclui depende do que você deseja fazer com o artefato. Um ambiente onde você deseja testar o artefato provavelmente será definido de forma diferente daquele onde você deseja implantar o artefato para seus usuários finais.

Uma maneira de definir um ambiente do Azure Pipelines é com um arquivo YAML. Seu arquivo YAML inclui uma environment seção, que especifica o ambiente do Azure Pipelines, onde você implantará seu artefato.

Ao planejar seu pipeline de lançamento, você precisará decidir onde seu aplicativo ou serviço será executado. Vamos ouvir e ver o que Andy e Mara decidem.

Andy: Em um alto nível, que tipo de ambiente queremos? Queremos implantar no local ou na nuvem?

Mara: Poderíamos pedir ao Tim para criar uma VM para nós no laboratório, mas ele está sempre ficando sem hardware. Será rápido e fácil configurar um POC se usarmos a nuvem.

Andy: Concordo, mas há tantas opções de nuvem a considerar, e podemos usar o Azure Pipelines para implantar em qualquer uma delas. O que devemos tentar?

Mara: As equipes que desenvolvem nossos jogos usam o Azure para hospedar alguns de seus sistemas back-end. Eles montaram rapidamente e parecem gostar. Acho que devemos ficar com o Azure para a nossa nuvem.

Andy: OK, isso faz sentido! Mas o Azure fornece muitas opções de computação. Qual devemos escolher?

Andy lista estas opções no quadro branco:

  • Máquinas virtuais
  • Contentores
  • Serviço de Aplicações do Azure
  • Computação sem servidor

Nota

Você encontrará mais informações sobre cada uma dessas opções de computação no final deste módulo.

Mara: Eu sei que contêineres e computação sem servidor são populares no momento. Em comparação com as VMs, ambas são leves em termos de recursos. Eles também são fáceis de substituir e dimensionar. Ambos são interessantes, mas estou nervoso por aprender duas novas tecnologias ao mesmo tempo. Prefiro concentrar-me apenas na construção do gasoduto.

Andy: Estou com você. Isso deixa VMs ou Serviço de Aplicativo. Acho que as VMs seriam uma escolha melhor se estivéssemos movendo um aplicativo de linha de negócios — que requer acesso total a algum ambiente específico — para a nuvem. Não estamos fazendo nada tão significativo.

Mara: Isso deixa o Serviço de Aplicativo, que seria a minha escolha. Foi concebido para funcionar com o Azure DevOps e apresenta vantagens. É um ambiente de plataforma como serviço (PaaS) para aplicativos Web, então tira muito do fardo de nós. Não teremos que nos preocupar com infraestrutura. Ele também vem com recursos de segurança e nos permite executar balanceamento de carga e dimensionamento automático.

Andy: O Serviço de Aplicativo parece o que precisamos. Vamos usar o Serviço de Aplicativo. Estamos criando apenas uma prova de conceito de qualquer maneira. Podemos sempre alterar a opção de computação se quisermos tentar outra coisa mais tarde.

Como o Azure Pipelines executa as etapas de implantação?

Para implantar seu aplicativo, o Azure Pipelines primeiro precisa se autenticar com o ambiente de destino. O Azure Pipelines fornece diferentes mecanismos de autenticação. O que você usa depende do ambiente de destino no qual você está implantando. Você encontrará mais informações sobre esses mecanismos no final deste módulo.

Andy: Temos nosso artefato de construção e sabemos que vamos construir e implantar em estágios do pipeline. Também definimos o ambiente de destino para nossa implantação. Isso é Serviço de Aplicativo. Minha pergunta agora é: como o Azure Pipelines se autentica com o Serviço de Aplicativo? Sei que essa será uma das preocupações de Tim. Temos de garantir que o processo é seguro.

Depois de um pouco de pesquisa, Andy e Mara apresentam as etapas gerais que permitem que o Azure Pipelines seja implantado no Serviço de Aplicativo:

  1. Especifique o ambiente de implantação de destino na configuração do pipeline.
  2. Forneça uma maneira para o Azure Pipelines autenticar o acesso a esse ambiente.
  3. Use as tarefas do Azure Pipelines para implantar o artefato de compilação nesse ambiente.

Mara: De acordo com nossa pesquisa, precisamos criar uma conexão de serviço para especificar o ambiente de destino e autenticar o acesso a ele. Depois de definirmos a conexão de serviço, ela estará disponível para todas as nossas tarefas usarem. Em seguida, precisamos usar as tarefas internas DownloadPipelineArtifact para baixar o artefato de compilação para o agente de pipeline e AzureWebApp para implantar nosso aplicativo no Serviço de Aplicativo do Azure.

O que são empregos e estratégias?

Seu pipeline de compilação existente define um agente de compilação, variáveis de pipeline e as tarefas necessárias para criar seu software.

A parte de implantação do pipeline contém esses mesmos elementos. Sua configuração de implantação normalmente também define um ou mais trabalhos, um ambiente de pipeline e estratégias. Você aprendeu sobre ambientes de pipeline anteriormente.

Aqui está um exemplo de configuração que você executará posteriormente neste módulo. Essa configuração implanta o site do Jogo Espacial no Serviço de Aplicativo do Azure.

- stage: 'DeployDev'
  displayName: 'Deploy to dev environment'
  dependsOn: Build
  jobs:
  - deployment: Deploy
    pool:
      vmImage: 'ubuntu-20.04'
    environment: dev
    variables:
    - group: 'Release Pipeline'
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: drop
          - task: AzureWebApp@1
            displayName: 'Azure App Service Deploy: website'
            inputs:
              azureSubscription: 'Resource Manager - Tailspin - Space Game'
              appName: '$(WebAppName)'
              package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'

Tarefas

Um trabalho é uma série de etapas — ou tarefas — que são executadas sequencialmente como uma unidade. Cada estágio de pipeline tem um trabalho por padrão, mesmo quando esse estágio não usa a job palavra-chave.

Um trabalho pode ser executado em um pool de agentes, em um contêiner ou diretamente no servidor de DevOps do Azure. O trabalho de exemplo mostrado aqui é executado em um agente do Ubuntu hospedado pela Microsoft.

Você pode especificar as condições sob as quais cada tarefa é executada. O exemplo de trabalho mostrado aqui não define nenhuma condição. Por padrão, um trabalho é executado se não depender de nenhum outro trabalho ou se todos os trabalhos dos quais ele depende tiverem sido concluídos com êxito.

Você também pode executar trabalhos em paralelo ou sequencialmente. Usando seu pipeline de compilação existente como exemplo, você pode usar trabalhos paralelos para criar seu software em agentes Windows, Linux e macOS simultaneamente.

Um trabalho de implantação é um tipo especial de trabalho que desempenha um papel importante em seus estágios de implantação. Os trabalhos de implantação registram o status de suas implantações no Azure Pipelines, fornecendo uma trilha de auditoria. Os trabalhos de implantação também ajudam você a definir sua estratégia de implantação, o que faremos em breve.

Estratégias

Uma estratégia define como seu aplicativo é implementado. Você aprenderá mais sobre estratégias como azul-verde e canário em um módulo futuro. Por enquanto, você usará a estratégia runOnce para baixar o pacote do Jogo Espacial do pipeline e implantá-lo no Serviço de Aplicativo do Azure.

Como o Azure Pipelines se conecta ao Azure?

Para implantar seu aplicativo em um recurso do Azure, como uma máquina virtual ou Serviço de Aplicativo, você precisa de uma conexão de serviço. Uma conexão de serviço fornece acesso seguro à sua assinatura do Azure usando um dos dois métodos:

  • Autenticação do principal de serviço
  • Identidades geridas para os recursos do Azure

Você pode aprender mais sobre esses modelos de segurança no final deste módulo, mas em resumo:

  • Uma entidade de serviço é uma identidade com uma função limitada que pode acessar recursos do Azure. Pense em uma entidade de serviço como uma conta de serviço que pode executar tarefas automatizadas em seu nome.
  • As identidades gerenciadas para recursos do Azure são um recurso do Microsoft Entra ID que simplifica o processo de trabalho com entidades de serviço. Como as identidades gerenciadas existem no locatário do Microsoft Entra, a infraestrutura do Azure pode autenticar automaticamente o serviço e gerenciar a conta para você.

As identidades gerenciadas simplificam o processo de trabalho com entidades de serviço; mas neste módulo, usaremos a autenticação da entidade de serviço porque uma conexão de serviço pode descobrir automaticamente seus recursos do Azure e atribuir as funções de entidade de serviço apropriadas para você.

O plano

Andy e Mara estão prontos para começar. Eles vão:

  • Desenvolva a configuração de compilação existente do Azure Pipelines.
  • Defina um estágio de construção que cria o artefato.
  • Defina um estágio de implantação que implante o artefato no Serviço de Aplicativo.

Diagram that shows a hand-drawn illustration of a deployment pipeline that contains two stages. The deployment stage deploys the artifact to App Service.

Andy: Este desenho está correto? Usamos o Azure Pipelines para implantar no Serviço de Aplicativo do Azure. Para fazer isso, tomamos o artefato de construção como a entrada para o estágio de implantação. As tarefas no estágio de implantação baixam o artefato e usam uma conexão de serviço para implantar o artefato no Serviço de Aplicativo .

Mara: Isso resume tudo. Vamos começar.

Verifique o seu conhecimento

1.

Você tem uma ótima ideia para um novo aplicativo Web. Você tem código de trabalho em seu laptop, mas quer feedback de sua equipe antes de continuar. Qual é a maneira mais rápida de implantar seu aplicativo no Azure para que você possa compartilhá-lo com sua equipe?

2.

Para implantar no Serviço de Aplicativo do Azure, quais recursos o Azure Pipelines precisa?

3.

Qual das afirmações a seguir descreve a relação entre tarefas, estágios e trabalhos?