O Que É Pipeline as Code?
Pipeline as code significa definir seu pipeline de CI/CD em arquivos de configuração versionados que vivem junto do código da sua aplicação.
As primeiras ferramentas de CI eram configuradas clicando por uma UI web, o que tornava os pipelines difíceis de revisar, copiar ou recuperar. Pipeline as code move essa configuração para arquivos no seu repositório, de modo que o pipeline é tratado como qualquer outro código.
A ideia central
Em vez de configurar jobs em um dashboard, você escreve a definição do pipeline em um arquivo, muitas vezes YAML, e faz commit dele no seu repositório. O sistema de CI lê esse arquivo para saber o que rodar. O pipeline se torna parte da base de código, versionado e revisado junto da aplicação.
Um exemplo
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: make build
- run: make testComo funciona na prática
Quando o arquivo muda, o pipeline muda, no mesmo commit, revisado no mesmo pull request. Você pode ver exatamente quem mudou o processo de build e por quê. Fazer branch do repositório também faz branch do pipeline, então um branch de feature pode testar mudanças no pipeline com segurança antes que cheguem à linha principal.
Por que supera uma UI
- Controle de versão: toda mudança no pipeline é rastreada e revisável.
- Reprodutibilidade: o pipeline viaja com o código, incluindo o histórico.
- Reuso: templates e arquivos compartilhados cortam a duplicação.
- Recuperação: restaurar o repo restaura o pipeline.
Por que importa
Pipeline as code traz a disciplina da engenharia de software, revisão, teste, histórico de versões, para o próprio processo de entrega. Ela também torna o pipeline portátil e autodocumentado: um novo engenheiro pode ler o arquivo e entender exatamente como o projeto é construído e entregue.
Principais conclusões
- Pipeline as code define o CI/CD em arquivos versionados.
- Mudanças no pipeline são revisadas e rastreadas como código de aplicação.
- Ela melhora a reprodutibilidade, o reuso e a recuperabilidade.