CI/CD com GitHub Actions automatiza build, teste e deploy do seu projeto. Com um arquivo de configuração YAML, você define um pipeline que roda a cada push ou pull request, eliminando tarefas manuais e reduzindo erros. Este guia cobre os pré-requisitos e as etapas para criar seu primeiro pipeline funcional.
Pré-requisitos
- Conta no GitHub e um repositório com código (qualquer linguagem).
- Conhecimento básico de Git e YAML.
- Projeto com testes configurados (ex.: pytest para Python, Jest para JavaScript).
Passo 1: Criar o arquivo de workflow
No repositório, crie a pasta .github/workflows/. Dentro dela, adicione um arquivo com extensão .yml, por exemplo, ci.yml. Esse arquivo define o pipeline. O GitHub Actions procura workflows nesse diretório.
Dica: Use nomes descritivos para o arquivo, como deploy.yml ou test.yml, para identificar a finalidade.
Passo 2: Definir o nome e o gatilho (trigger)
Abra o arquivo e comece com: name: CI Pipeline on: push: branches: [ main ] pull_request: branches: [ main ] O name é opcional, mas ajuda na identificação. O on define quando o workflow é executado, neste caso, a cada push ou pull request na branch main.
Erro comum: Esquecer de especificar branches faz o workflow rodar para qualquer branch, consumindo minutos de execução sem necessidade.
Passo 3: Configurar o job de build e teste
Dentro do workflow, adicione um job. Cada job roda em um runner (máquina virtual). Exemplo para um projeto Node.js: jobs: build: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4 with: node-version: '20'
- run: npm install
- run: npm test
O passo actions/checkout baixa o código. Depois, configura o ambiente, instala dependências e executa os testes.
Dica: Use matrix para testar em múltiplas versões de linguagem ou sistema operacional, aumentando a cobertura sem duplicar código.
Passo 4: Adicionar deploy (opcional)
Para deploy, crie um job separado que depende do build. Exemplo para deploy no GitHub Pages: deploy: needs: build runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./build O needs garante que o deploy só ocorra se o build passar. O token GITHUB_TOKEN é gerado automaticamente pelo GitHub.
Erro comum: Não configurar segredos (secrets) para credenciais de serviços externos, expondo tokens no código.
Passo 5: Salvar e testar
Commit e push do arquivo .github/workflows/ci.yml. Vá até a aba "Actions" do repositório. O workflow será executado automaticamente. Acompanhe os logs para verificar cada passo.
Dica: Adicione um badge de status no README.md para mostrar visualmente se o pipeline está passando.
Checklist do que foi feito
- [ ] Criou a pasta
.github/workflows/. - [ ] Definiu gatilho (push/pull request na branch principal).
- [ ] Configurou job de build com checkout, setup e testes.
- [ ] (Opcional) Adicionou job de deploy com dependência.
- [ ] Salvou, fez push e verificou execução na aba Actions.
FAQ
O que é um runner no GitHub Actions?
Runner é a máquina virtual que executa os jobs. Por padrão, usa ubuntu-latest, mas você pode escolher windows-latest ou macos-latest, ou hospedar seu próprio runner.
Como usar variáveis de ambiente no workflow?
Defina env no nível do workflow, job ou step. Exemplo: env: NODE_ENV: production. Também é possível usar segredos com ${{ secrets.NOME_DO_SECRET }}.
O que fazer se o workflow falhar sem motivo aparente?
Verifique os logs na aba Actions. Erros comuns incluem sintaxe YAML incorreta (use um validador online), dependências que não foram instaladas ou permissões insuficientes no token.
Posso reutilizar steps entre workflows?
Sim, com actions/composite ou chamando workflows reutilizáveis com workflow_call. Isso evita duplicação em projetos com múltiplos pipelines.
Como limitar o tempo de execução do workflow?
Adicione timeout-minutes no job. Exemplo: timeout-minutes: 10. O padrão é 360 minutos, mas é recomendado definir um limite para evitar consumo desnecessário de minutos.
O GitHub Actions é gratuito?
Sim, para repositórios públicos. Repositórios privados têm uma cota mensal de minutos (2.000 minutos por mês no plano gratuito) e armazenamento de artefatos. Consulte a documentação oficial para limites atuais.