Pular para o conteúdo

GitLab CI

Intermediário18 min de leituracicd

stages organiza a visualização; needs descreve a dependência real e permite executar um DAG. Separe validação, testes e build. O deploy deve consumir o digest produzido, não um checkout novo que pode ter mudado.

stages: [validar, testar, publicar]
teste:
stage: testar
image: node:22-bookworm-slim
script: ["npm ci", "npm test"]
publicar:
stage: publicar
needs: [teste]
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
script: ["./ci/publicar.sh $CI_COMMIT_SHA"]

Use rules para declarar quando cada job existe; evite misturar mecanismos sem testar a árvore de decisões. artifacts transferem evidência entre jobs, com expiração definida, e nunca devem conter segredo. cache serve para dependências e sua chave deve vir do lockfile.

Templates com extends reduzem repetição, mas herança profunda oculta permissões e scripts. Variáveis protegidas só devem chegar a branches e ambientes protegidos; prefira identidade federada quando o provedor permitir. Review apps precisam expirar e nunca usar dados de produção. Restrinja runners por tags e acesso de rede para jobs de publicação.

Próximo passo: use GitOps quando o cluster deve reconciliar estado a partir do repositório, sem acesso direto do CI a produção.