Introdução à Automação de Workflow CI/CD
No ciclo de vida de desenvolvimento de software moderno, o CI/CD (Integração Contínua e Entrega Contínua) não é mais um luxo — é uma necessidade. Automatizar seus processos de build, teste e deploy permite que as equipes entreguem software de alta qualidade mais rapidamente e com menos erros manuais. No entanto, configurar essas pipelines do zero pode ser uma tarefa assustadora e demorada.
É aqui que os modelos de automação de workflow CI/CD e os geradores entram em jogo. Ao usar modelos padronizados, você pode acelerar sua jornada DevOps, garantir consistência entre projetos e aderir às melhores práticas da indústria sem reinventar a roda. Neste guia, exploraremos as plataformas CI/CD mais populares e forneceremos modelos prontos para usar para otimizar sua automação.
GitHub Actions e GitLab CI: Pipelines Modernas Cloud-Native
O GitHub Actions e o GitLab CI tornaram-se os líderes da indústria para CI/CD nativo na nuvem devido à sua profunda integração com sistemas de controle de versão.
Gerador de Workflow GitHub Actions (GitHub Actions workflow generator)
Um gerador de workflow GitHub Actions ajuda você a criar arquivos .github/workflows/*.yml adaptados à pilha tecnológica do seu projeto. Esteja você construindo um app Node.js, um script Python ou uma imagem Docker, um bom modelo garante que seus segredos sejam manipulados com segurança e que seus jobs sejam executados com eficiência.
Modelo .github/workflows (Exemplo Node.js)
Aqui está um modelo .github/workflows robusto para um projeto Node.js que inclui linting, testes e build:
name: Node.js CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build
Modelo e Gerador GitLab CI (gitlab CI template & .gitlab-ci.yml generator)
O GitLab CI usa um único arquivo, .gitlab-ci.yml, para definir toda a pipeline. O uso de um gerador de .gitlab-ci.yml ou um modelo GitLab CI permite definir pipelines complexas de vários estágios com facilidade.
Modelo .gitlab-ci.yml básico
stages:
- build
- test
- deploy
build-job:
stage: build
script:
- echo "Compilando o código..."
- npm install
- npm run build
artifacts:
paths:
- dist/
test-job:
stage: test
script:
- echo "Executando testes unitários..."
- npm test
deploy-prod:
stage: deploy
script:
- echo "Fazendo deploy para o servidor de produção..."
only:
- main
Pipelines Jenkinsfile: O Padrão Corporativo
O Jenkins continua sendo a espinha dorsal do CI/CD para muitas empresas devido ao seu imenso ecossistema de plugins e flexibilidade.
Gerador de Jenkinsfile e Modelo de Pipeline (Jenkinsfile generator & Jenkinsfile pipeline template)
Um gerador de Jenkinsfile simplifica a criação de pipelines baseadas em Groovy. O uso de um modelo de pipeline Jenkinsfile garante que seus estágios estejam claramente definidos e que seu ambiente esteja devidamente isolado.
Modelo de Jenkinsfile Declarativo
pipeline {
agent any
environment {
APP_NAME = 'meu-app-legal'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
echo 'Fazendo deploy para Produção...'
// Adicione seus comandos de deploy aqui
}
}
}
post {
always {
cleanWs()
}
failure {
echo 'Pipeline falhou! Verifique os logs.'
}
}
}
CircleCI, Travis, Drone e Bitbucket
Além dos "Três Grandes", várias outras plataformas oferecem excelentes capacidades de automação.
Gerador de .circleci/config.yml
O CircleCI usa um formato YAML altamente otimizado. Um gerador de .circleci/config.yml ajuda você a gerenciar "orbs" (pacotes de configuração reutilizáveis).
version: 2.1
jobs:
build_and_test:
docker:
- image: cimg/node:20.0
steps:
- checkout
- run: npm install
- run: npm test
workflows:
sample:
jobs:
- build_and_test
Gerador de .travis.yml e .drone.yml
O Travis CI é conhecido por sua simplicidade, enquanto o Drone CI é famoso por sua abordagem centrada em containers. Use um gerador de .travis.yml ou um gerador de .drone.yml para começar rapidamente.
Modelo Travis CI:
language: node_js
node_js:
- "20"
script:
- npm install
- npm test
Modelo Drone CI:
kind: pipeline
type: docker
name: default
steps:
- name: test
image: node:20
commands:
- npm install
- npm test
Gerador de Bitbucket Pipelines (bitbucket-pipelines.yml generator)
Para equipes que usam o Bitbucket, o gerador de bitbucket-pipelines.yml é a ferramenta ideal.
image: node:20
pipelines:
default:
- step:
caches:
- node
script:
- npm install
- npm test
branches:
main:
- step:
script:
- npm install
- npm test
- npm run deploy
FAQ: Erros Comuns de CI/CD e Soluções
Por que meu "workflow não foi encontrado (workflow not found)"?
Isso geralmente acontece se o arquivo YAML estiver no diretório errado (ex: .github/workflow em vez de .github/workflows) ou tiver um erro de sintaxe. Verifique o caminho do arquivo e use um linter YAML.
O que devo fazer se o "runner estiver offline (runner offline)"?
Se você estiver usando runners auto-hospedados, certifique-se de que o serviço do runner esteja ativo e tenha conectividade com a Internet. Para runners hospedados pelo GitHub/GitLab, verifique suas páginas de status para quedas de serviço.
Como corrigir erros de "permissão negada (permission denied)"?
Verifique se seus scripts de CI/CD têm permissões de execução (ex: chmod +x script.sh). Além disso, verifique se o usuário que executa o agente de CI tem acesso aos diretórios de destino ou ao socket do Docker.
Por que falta uma "variável de ambiente (environment variable missing)"?
Certifique-se de ter definido seus segredos e variáveis nas configurações da plataforma (Repository Secrets no GitHub, CI/CD Variables no GitLab). Lembre-se de que os segredos muitas vezes não são passados para PRs de forks por razões de segurança.
Impulsione seu Desenvolvimento com a Tool3M
Construir pipelines CI/CD perfeitas é apenas uma parte da jornada do desenvolvedor. Na Tool3M, oferecemos uma ampla gama de ferramentas online gratuitas e de alta qualidade para ajudá-lo em tudo, desde a formatação de JSON até o processamento de imagens.
Confira nossas outras ferramentas e torne seu workflow ainda mais eficiente hoje mesmo!