O Que É um Step de Pipeline? A Menor Unidade de Trabalho
Um step de pipeline é a menor unidade de trabalho em um pipeline: um comando ou uma ação reutilizável que roda dentro de um job.
Se um job é uma receita, os steps são as instruções individuais. Cada step faz uma coisa: fazer checkout do repositório, instalar dependências, rodar a suíte de testes ou fazer upload de um artifact. Steps rodam em ordem dentro de um job e compartilham a mesma máquina e workspace, então um step posterior pode usar arquivos que um step anterior produziu.
O que um step faz
Um step é ou um comando de shell que você escreve (run: npm test) ou uma ação empacotada que você reutiliza (uses: actions/checkout). Steps executam de cima para baixo, e por padrão, se um step falha, o resto do job para.
Steps compartilham um workspace
Todos os steps em um job rodam no mesmo runner e veem o mesmo sistema de arquivos. É por isso que um step de "checkout" seguido de um step de "build" funciona: o segundo step encontra os arquivos que o primeiro clonou. O estado não passa entre jobs a menos que você o passe explicitamente.
Um exemplo rápido
Um job mínimo tem steps como: fazer checkout do repo, configurar o toolchain da linguagem, instalar dependências, rodar testes. No YAML, cada item sob steps: é um step, e a ordem é a ordem em que rodam.
Controlando o comportamento do step
- Condições: pular um step a menos que uma condição se verifique.
- Continue-on-error: deixar o job prosseguir mesmo se o step falhar.
- Environment: definir variáveis visíveis para aquele step.
- Working directory: rodar o step em uma pasta específica.
Steps vs jobs
Steps rodam sequencialmente e compartilham uma máquina; jobs podem rodar em paralelo em máquinas separadas e são isolados uns dos outros. Escolha steps para trabalho ordenado que compartilha arquivos, e jobs para trabalho independente que você quer rodar ao mesmo tempo.
Steps e a velocidade do pipeline
Steps lentos (instalações de dependências, grandes downloads) dominam muitos jobs. Fazer cache desses steps e começar em uma máquina quente reduz o custo. Runners gerenciados (Latchkey) mantêm os caches de dependências e imagens quentes, para que os steps iniciais de cada job terminem mais rápido.
Principais conclusões
- Um step é um comando ou ação, a menor unidade dentro de um job.
- Steps rodam em ordem e compartilham o mesmo workspace e máquina.
- Um step que falha para o job por padrão, a menos que você permita que ele continue.