Posso dizer, sem dúvidas, que o mais assustador para alguém que está começando no universo de Devops e se vê diante de uma pipeline complexa, são os termos STAGE, STEP e JOBS. Até que consiga entender qual é a hierarquia deles, a pessoa pode ficar bem perdida. Para ficar mais fácil de entender, a documentação da Microsoft traz vários exemplos e um deles vou reproduzir abaixo. hierarquia-pipeline.yml
STAGE A:
JOB 1:
STEP 1.1
STEP 1.2
JOB 2:
STEP 2.1
STEP 2.2
STAGE B:
...
exemplo.pipeline.yml
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- script: echo Building!
- stage: Test
jobs:
- job: TestOnWindows
steps:
- script: echo Testing on Windows!
- job: TestOnLinux
steps:
- script: echo Testing on Linux!
- stage: Deploy
jobs:
- job: Deploy
steps:
- script: echo Deploying the code!
- STAGE é a coleção principal que contém todos os Jobs que devem ser executados. Por padrão, os stages nas pipelines são executados na sequência se o estágio anterior terminar com sucesso; caso contrário, a pipeline falhará ou os stages podem ser condicionadas a rodarem com dependência em um determinado estágio usando o dependeOn.
- JOB é uma coleção de etapas que, em uma pipeline, podemos usar para executar diferentes tipos de testes, builds ou o que for preciso em máquinas ou versões de sistemas operacionais diferentes. Isso porque, pra cada JOB você pode definir um AGENT POOL. Com o Agent Pool você pode escolher o sistema operacional em que a pipeline irá rodar determinado Job, podendo ser em Vms ou até mesmo Containers.
- STEPS são as sequências de operações dentro de um JOB, e é aqui que quase tudo funciona, pois podemos adicionar TASK, BASH, POWERSHELL, SCRIPT e muito mais.
E não é necessário seguir a estrutura — posso usar somente o job ou o stage em uma pipeline.
Vamos brincar, aà explico outros detalhes da pipeline no exemplo que vou montar. Para isso, vou criar um projeto do zero. Gosto do repositório de exemplos da Microsoft, pois contém exemplos de aplicações de quase todas as linguagens. Vou criar um FORK dela em meu Azure repo. https://github.com/microsoft/devops-project-samples.