Compreender os estágios do pipeline
Os pipelines permitem automatizar as etapas do processo de implantação. Seu processo pode incluir vários grupos lógicos de trabalhos que você deseja executar. Nesta unidade, você aprenderá sobre os estágios do pipeline e como usá-los para adicionar processos de controle de qualidade às suas implantações do Bicep.
O que são estágios de pipeline?
Os estágios ajudam você a dividir seu pipeline em vários blocos lógicos. Cada etapa pode conter um ou mais trabalhos. Os trabalhos contêm uma lista ordenada de etapas que devem ser concluídas, como a execução de scripts de linha de comando.
Os estágios podem ser usados em seu pipeline para marcar uma separação de preocupações. Por exemplo, quando você trabalha com código Bicep, validar o código é uma preocupação separada da implantação do arquivo Bicep. Quando você usa um pipeline automatizado, a criação e o teste de seu código geralmente são chamados de integração contínua (CI). A implantação de código em um pipeline automatizado geralmente é chamada de implantação contínua (CD).
Em estágios de CI, você verifica a validade das alterações que foram feitas no seu código. Os estágios de CI fornecem garantia de qualidade. Eles podem ser executados sem afetar seu ambiente de produção ao vivo.
Em muitas linguagens de programação, o código precisa ser construído antes que alguém possa executá-lo. Quando um arquivo Bicep é implantado, ele é convertido, ou transpilado, de Bicep para JSON. As ferramentas executam este processo automaticamente. Na maioria das situações, você não precisa criar manualmente código Bicep para modelos JSON dentro do seu pipeline. No entanto, ainda usamos o termo integração contínua quando falamos de código Bicep, porque as outras partes do CI ainda se aplicam, como validar seu código.
Depois que os estágios de CI forem executados com êxito, você deve ter aumentado sua confiança de que as alterações feitas também serão implantadas com êxito. Nos estágios de CD, você implantará seu código em cada um dos seus ambientes. Normalmente, você começará com ambientes de teste e outros ambientes que não sejam de produção e passará para ambientes de produção. Neste módulo, implantaremos em um único ambiente. Em um módulo futuro, você aprenderá como estender seu pipeline de implantação para implantar em vários ambientes, como ambientes de não-produção e produção.
Os estágios são executados em sequência. Você pode controlar como e quando cada etapa é executada. Por exemplo, você pode configurar os estágios do CD para serem executados somente depois que os estágios de CI forem executados com êxito. Ou, você pode ter vários estágios de CI que precisam ser executados em sequência, como para criar seu código e, em seguida, testá-lo. Você também pode incluir um estágio de reversão que é executado somente se os estágios de implantação anteriores falharem.
Deslocando para a esquerda
Usando estágios, você pode verificar a qualidade do seu código antes de implantá-lo. Esses estágios às vezes são chamados de deslocamento para a esquerda.
Considere uma linha do tempo das atividades que você executa quando escreve código. O cronograma começa a partir das fases de planejamento e projeto. Em seguida, passa para as fases de construção e teste. Finalmente, você implanta e, em seguida, tem que dar suporte à sua solução.
É uma regra bem compreendida no desenvolvimento de software que quanto mais cedo no processo você encontrar um erro (quanto mais à esquerda da linha do tempo), mais fácil, mais rápido e mais barato é corrigir. Quanto mais tarde no processo você pegar um erro, mais difícil será corrigir.
Assim, o objetivo é deslocar a descoberta de problemas para a esquerda do diagrama anterior. Ao longo deste módulo, você verá como pode adicionar mais validação e testes ao seu pipeline à medida que ele progride.
Você pode até mesmo adicionar validação bem antes do início da implantação. Quando você trabalha com ferramentas como o Azure DevOps, as solicitações pull geralmente representam alterações que alguém da sua equipe deseja fazer no código em sua ramificação principal. É útil criar outro pipeline que execute automaticamente suas etapas de CI durante o processo de revisão da solicitação pull. Esta técnica ajuda a validar que o código ainda funciona, mesmo com as alterações propostas. Se a validação for bem-sucedida, você terá alguma confiança de que a alteração não causará problemas quando for mesclada à sua ramificação principal. Se a verificação falhar, você sabe que há mais trabalho a fazer antes que a solicitação pull esteja pronta para mesclar.
Importante
A validação e os testes automatizados são tão eficazes quanto os testes que você escreve. É importante considerar as coisas que você precisa testar e as etapas que precisa executar para ter certeza de que sua implantação está OK.
Definir um estágio de pipeline
Cada pipeline contém pelo menos um estágio. Se o seu pipeline tiver apenas um único estágio, você não precisará defini-lo explicitamente. O Azure Pipelines o define automaticamente para você. Quando você tem vários estágios em um pipeline, você precisa definir cada um. Os estágios são executados em uma sequência especificada por você.
Imagine que você criou um arquivo Bicep que precisa implantar duas vezes: uma para infraestrutura nos Estados Unidos e outra para infraestrutura na Europa. Antes de implantar, você valida seu código Bicep. Aqui está uma ilustração de um pipeline de vários estágios que define esse processo:
Observe que este exemplo tem três estágios. O estágio Validate é semelhante a um estágio IC. Em seguida, os estágios DeployUS e DeployEurope são executados. Cada um implanta o código em um dos ambientes.
Veja como os estágios são definidos em um arquivo YAML de pipeline:
stages:
- stage: Test
jobs:
- job: Test
- stage: DeployUS
jobs:
- job: DeployUS
- stage: DeployEurope
jobs:
- job: DeployEurope
Controlar a sequência de etapas
Por padrão, os estágios são executados na ordem que você definir. Uma etapa só é executada se a etapa anterior tiver sido bem-sucedida. Você pode adicionar dependências entre os estágios para alterar a ordem.
Continuando o exemplo anterior, imagine que você deseja executar ambas as implantações em paralelo, da seguinte forma:
Você pode especificar as dependências entre os estágios usando a dependsOn
palavra-chave:
stages:
- stage: Test
jobs:
- job: Test
- stage: DeployUS
dependsOn: Test
jobs:
- job: DeployUS
- stage: DeployEurope
dependsOn: Test
jobs:
- job: DeployEurope
Quando você usa a palavra-chave dependsOn
, o Azure Pipelines aguarda que o estágio dependente seja concluído com êxito antes de iniciar o próximo estágio. Se o Azure Pipelines detetar que todas as dependências de vários estágios foram satisfeitas, ele poderá executar esses estágios em paralelo.
Nota
Na realidade, os estágios e trabalhos são executados em paralelo apenas se você tiver agentes suficientes para executar vários trabalhos ao mesmo tempo. Quando você usa agentes hospedados pela Microsoft, talvez seja necessário comprar trabalhos paralelos adicionais para conseguir isso.
Às vezes, você deseja executar um estágio quando um estágio anterior falha. Por exemplo, aqui está um pipeline diferente. Se a implantação falhar, um estágio chamado Rollback será executado imediatamente depois:
Você pode usar a condition
palavra-chave para especificar uma condição que deve ser atendida antes que um estágio seja executado:
stages:
- stage: Test
jobs:
- job: Test
- stage: Deploy
dependsOn: Test
jobs:
- job: Deploy
- stage: Rollback
condition: failed('Deploy')
jobs:
- job: Rollback
No exemplo anterior, quando tudo corre bem, o Azure Pipelines executa primeiro o estágio Validar e, em seguida, o estágio Implantar . Ele pula o estágio de reversão . No entanto, se o estágio de Implantação falhar, o Azure Pipelines executará o estágio de Reversão . Você aprenderá mais sobre a reversão mais adiante neste módulo.
Cada trabalho é executado em um novo agente. Isso significa que cada trabalho começará a partir de um ambiente limpo, portanto, em cada trabalho, você normalmente precisa verificar o código-fonte como seu primeiro passo.
Estágios de implantação do bíceps
Um pipeline de implantação do Bicep típico contém vários estágios. À medida que o gasoduto avança pelas fases, o objetivo é tornar-se cada vez mais confiante de que as fases posteriores serão bem-sucedidas. Aqui estão os estágios comuns para um pipeline de implantação do Bicep:
- Lint: Use o linter Bicep para verificar se o arquivo Bicep está bem formado e não contém erros óbvios.
- Validar: use o processo de validação de comprovação do Azure Resource Manager para verificar se há problemas que possam ocorrer durante a implantação.
- Pré-visualização: utilize o comando hipotético para validar a lista de alterações que serão aplicadas no seu ambiente do Azure. Peça a um humano para revisar manualmente os resultados hipotéticos e aprovar o pipeline para prosseguir.
- Implantar: envie sua implantação para o Gerenciador de Recursos e aguarde até que ela seja concluída.
- Teste de fumaça: execute verificações pós-implantação básicas em relação a alguns dos recursos importantes que você implantou. Essas revisões são chamadas de testes de fumaça de infraestrutura.
Sua organização pode ter uma sequência diferente de estágios ou talvez seja necessário integrar suas implantações do Bicep em um pipeline que implante outros componentes. Depois de entender como os estágios funcionam, você pode projetar um pipeline para atender às suas necessidades.
Ao longo deste módulo, você aprenderá mais sobre os estágios listados aqui e construirá progressivamente um pipeline que inclui cada estágio. Você também aprenderá:
- Como os pipelines interrompem o processo de implantação se algo inesperado acontecer em qualquer um dos estágios anteriores.
- Como configurar seu pipeline para pausar até verificar manualmente o que aconteceu em um estágio anterior.