Compreender os Pipelines do Azure
Você pode automatizar as etapas em seu processo de implantação usando um pipeline. Cada vez que você faz uma alteração no seu código e confirma a alteração no seu repositório Git, o pipeline executa seu processo predefinido. Um pipeline pode verificar se seu código Bicep atende aos seus padrões de qualidade e, em seguida, automatiza as etapas para implantar seus recursos no Azure. O processo é definido em uma definição de pipeline que você cria.
O Azure Pipelines é um recurso do serviço Azure DevOps. O Azure DevOps também inclui o Azure Repos, que hospeda os repositórios Git que você usa para armazenar e compartilhar seu código com seus colaboradores. Quando você armazena seu código Bicep no Git, o Azure Pipelines pode acessar seu código para automatizar seus processos de implantação. Nesta unidade, você aprenderá sobre o Azure Pipelines.
O que é um pipeline?
Um pipeline é o processo repetível que você usa para testar e implantar seu código definido em um arquivo de configuração. Um pipeline inclui todas as etapas que você deseja executar e em que ordem.
Ao trabalhar com o Azure Pipelines, você define seu pipeline em um arquivo YAML. Um arquivo YAML é um arquivo de texto estruturado, semelhante a como Bicep é um arquivo de texto estruturado. Você pode criar e editar arquivos YAML usando qualquer editor de texto. Neste módulo, utilizará o Visual Studio Code. O Visual Studio Code oferece uma extensão que pode facilitar a edição de arquivos de pipeline YAML do Azure DevOps. A interface Web do Azure DevOps também fornece algumas ferramentas que você pode usar para exibir e editar seus arquivos YAML de pipeline.
Nota
O Azure Pipelines inclui pipelines clássicos, uma versão anterior do recurso de pipelines. Os pipelines baseados em YAML substituíram os pipelines clássicos. Neste módulo, discutimos apenas pipelines YAML. Recomendamos que você use pipelines YAML.
Como um arquivo YAML de pipeline é um arquivo de código, o arquivo é armazenado com o código Bicep no repositório Git. Você usa os recursos do Git para colaborar na definição do pipeline. Você pode gerenciar diferentes versões do seu arquivo de pipeline usando commits e branches. Em um módulo futuro, você também aprenderá sobre outros recursos avançados de pipelines, como modelos. Os modelos facilitam a reutilização das definições de pipeline.
Agentes e piscinas
Até agora, você implantou seus arquivos Bicep a partir do seu computador local. Depois de escrever um modelo Bicep, implante-o no Azure usando a CLI do Azure ou o Azure PowerShell. Essas ferramentas usam os recursos do seu computador para enviar o modelo para o Azure. Eles usam sua identidade pessoal para autenticá-lo no Azure e verificar se você tem as permissões para implantar os recursos.
Um pipeline também precisa de acesso a um computador, para que possa executar as etapas de implantação. O Azure Pipelines usa uma máquina chamada agente. Um agente é um computador configurado para executar etapas de implantação para um pipeline. Cada agente já tem as ferramentas Bicep e Azure que você usou em módulos anteriores, para que ele possa fazer as mesmas coisas que você faz em seu próprio computador. Em vez de um humano executando comandos, o serviço Azure Pipelines instrui o agente a executar as etapas que você definiu em um arquivo YAML.
O Azure Pipelines fornece vários tipos de agentes para diferentes sistemas operacionais, como Ubuntu ou Windows, e diferentes conjuntos de ferramentas. A Microsoft executa esses agentes, portanto, você não precisa manter nenhuma infraestrutura de computação para os agentes. Os agentes às vezes são chamados de agentes hospedados pela Microsoft ou agentes hospedados porque são hospedados em seu nome. Quando o pipeline é executado, um agente hospedado é criado automaticamente. Quando o pipeline terminar de ser executado, o agente hospedado será excluído automaticamente. Você não pode acessar agentes hospedados diretamente, por isso é importante que seu pipeline contenha todas as etapas necessárias para implantar sua solução.
Um pool de agentes contém vários agentes do mesmo tipo. Ao criar seu pipeline, você informa ao Azure Pipelines qual pool de agentes usar para executar cada conjunto de etapas. Quando o pipeline é executado, ele aguarda que um agente do pool fique disponível e, em seguida, instrui o agente a executar as etapas de implantação. Qualquer agente no pool pode ser atribuído para executar seu pipeline.
Nota
Você tem a opção de criar um agente personalizado chamado agente auto-hospedado. Você pode criar um agente auto-hospedado se tiver um software específico que precise ser executado como parte do pipeline ou se precisar controlar com precisão como o agente está configurado. Não discutimos agentes auto-hospedados neste módulo, mas fornecemos um link para mais informações no resumo.
Acionadores
Para instruir o Azure Pipelines sobre quando executar seu pipeline, crie um gatilho. Você pode escolher entre vários tipos de gatilhos. Por enquanto, você usará um gatilho manual. Você informará manualmente ao Azure Pipelines quando começar a executar seu pipeline. Mais adiante neste módulo, você aprenderá mais sobre outros tipos de gatilhos.
Passos
Uma etapa representa uma única operação que o pipeline executa. Uma etapa é semelhante a um comando individual que você executa no Bash ou PowerShell. Para a maioria das implantações, você executa várias etapas em uma sequência. Você define a sequência e todos os detalhes de cada etapa do arquivo YAML do pipeline.
O Azure Pipelines oferece dois tipos de etapas:
- Scripts. Use uma etapa de script para executar um único comando ou uma sequência de comandos no Bash, PowerShell ou no shell de comando do Windows.
- Tarefas. Uma tarefa é uma maneira conveniente de acessar muitos recursos diferentes sem escrever instruções de script. Por exemplo, uma tarefa interna pode executar a CLI do Azure e os cmdlets do Azure PowerShell para testar seu código ou carregar arquivos em um servidor FTP. Qualquer pessoa pode escrever uma tarefa e compartilhá-la com outros usuários publicando a tarefa no Visual Studio Marketplace. Um grande conjunto de tarefas comerciais e de código aberto estão disponíveis.
Algumas pessoas preferem usar instruções de script em vez de tarefas internas porque elas oferecem mais controle sobre o que é executado. Outras pessoas preferem usar tarefas para não terem que escrever e gerenciar scripts. Neste módulo, usamos uma mistura de ambas as abordagens.
Tarefas
No Azure Pipelines, um trabalho representa um conjunto ordenado de etapas. Você sempre tem pelo menos um trabalho em um pipeline e, quando cria implantações complexas, é comum ter mais de um trabalho.
Nota
Você pode definir cada tarefa para ser executada em um pool de agentes diferente. A execução de trabalhos em diferentes pools de agentes é útil quando você cria e implanta soluções que precisam usar sistemas operacionais diferentes em diferentes partes do pipeline de tarefas.
Por exemplo, suponha que você esteja criando um aplicativo iOS e o serviço de back-end do aplicativo. Você pode ter um trabalho que é executado em um pool de agentes do macOS para criar o aplicativo iOS e outro trabalho que é executado em um pool de agentes do Ubuntu ou do Windows para criar o back-end. Você pode até mesmo dizer ao pipeline para executar os dois trabalhos simultaneamente, o que acelera a execução do pipeline.
Ao longo deste módulo, declaramos o pool de agentes na raiz dos arquivos de definição de pipeline, para que todos os trabalhos nos pipelines usem o mesmo pool de agentes.
Nota
Você também pode usar estágios no Azure Pipelines para dividir seu pipeline em fases lógicas e adicionar verificações manuais em vários pontos da execução do pipeline. Você aprenderá mais sobre os estágios em módulos futuros.
Exemplo de pipeline básico
Agora que você já conhece os conceitos básicos no Azure Pipelines, vamos examinar uma definição de pipeline simples no YAML:
trigger: none
pool:
vmImage: ubuntu-latest
jobs:
- job:
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo We'll add more steps soon.
echo For example, we'll add our Bicep deployment step.
displayName: 'Run a multi-line script'
Vejamos cada parte do arquivo em detalhes:
trigger
informa ao seu pipeline quando executar. Nesse caso,trigger: none
informa ao Azure Pipelines que você deseja acionar manualmente o pipeline.pool
Instrui o pipeline sobre qual pool de agentes usar quando executar as etapas do pipeline. Neste exemplo, o pipeline é executado em um agente que executa o sistema operacional Ubuntu, que vem do pool de agentes hospedados pela Microsoft.jobs
agrupa todos os trabalhos no seu pipeline.job
informa ao seu pipeline que você tem um único trabalho.Gorjeta
Quando você tem apenas um trabalho em seu pipeline, você pode omitir as
jobs
palavras-chave ejob
. Incluímosjob
aqui para deixar claro como os conceitos funcionam juntos em um pipeline.steps
Lista a sequência de ações a serem executadas no trabalho. O exemplo YAML inclui duas etapas. Ambas as etapas executam um script simples para ecoar algum texto. Cada etapa tem umdisplayName
valor, que é um nome legível por humanos para a etapa. Você verá o nome para exibição quando olhar para os logs de pipeline. Para criar uma etapa de script de várias linhas, use o caractere pipe (|
) como mostrado no exemplo. Depois que a etapa for executada, você verá as saídas no log do pipeline.
Importante
Em arquivos YAML, o recuo é importante. Dê uma olhada no exemplo YAML. Algumas linhas no YAML são recuadas por dois ou quatro espaços. O número de espaços que utiliza é importante. Se você não recuar seu arquivo corretamente, o Azure Pipelines não poderá interpretá-lo. O Visual Studio Code ajuda você a localizar e corrigir erros no recuo do arquivo YAML.