Infraestrutura

🚀 Integração Contínua com GitHub Actions: CI/CD Simplificado para Projetos Node.js e Python

🚀 Integração Contínua com GitHub Actions: CI/CD Simplificado para Projetos Node.js e Python

A automação de testes, builds e deploys se tornou essencial no desenvolvimento moderno. Felizmente, com o GitHub Actions, você pode configurar pipelines de CI/CD diretamente no seu repositório GitHub — sem precisar de ferramentas externas.

Neste post, vamos mostrar como configurar um fluxo de integração contínua (CI) básico para projetos em Node.js e Python, com dicas, boas práticas e armadilhas a evitar.


O que é GitHub Actions?

O GitHub Actions permite criar workflows automatizados em resposta a eventos no repositório, como push, pull requests ou tags. Isso é perfeito para executar testes, rodar linters, empacotar aplicações ou fazer deploy automático.


📦 CI/CD para projetos Node.js

Estrutura básica do projeto

Certifique-se de que seu projeto tenha um package.json bem configurado, com os scripts de build e test:

{
  "scripts": {
    "test": "jest",
    "build": "tsc"
  }
}

Workflow GitHub Actions: .github/workflows/nodejs.yml

name: CI Node.js
 
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
 
jobs:
  build:
    runs-on: ubuntu-latest
 
    strategy:
      matrix:
        node-version: [18.x]
 
    steps:
      - uses: actions/checkout@v4
 
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
 
      - run: npm install
      - run: npm run build
      - run: npm test

Esse pipeline será executado a cada push ou PR na branch main.


🐍 CI/CD para projetos Python

Estrutura básica do projeto

Seu projeto deve conter um requirements.txt ou pyproject.toml (para projetos com Poetry) e um script de testes (pytest, por exemplo).

Workflow GitHub Actions: .github/workflows/python.yml

name: CI Python
 
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
 
jobs:
  build:
    runs-on: ubuntu-latest
 
    strategy:
      matrix:
        python-version: [3.10]
 
    steps:
      - uses: actions/checkout@v4
 
      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
 
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
 
      - name: Run tests
        run: pytest

✅ Boas práticas com GitHub Actions

  • Use caching (actions/cache) para evitar reinstalar dependências em cada build.

  • Divida o pipeline em jobs para etapas como lint, testes e deploy.

  • Use secrets criptografados para tokens de deploy com segurança.

  • Use matrix para testar múltiplas versões de Node.js ou Python.


⚠️ Armadilhas comuns

  • Esquecer de definir o evento correto (on:): seu workflow pode nunca rodar.

  • Ignorar falhas nos testes: sempre configure o npm test ou pytest no pipeline.

  • Executar deploy em qualquer branch: use condicionais (if:) para deploys só na branch principal ou em tags.


🔚 Conclusão

Com GitHub Actions, automatizar o ciclo de vida da sua aplicação ficou muito mais simples. Seja em Node.js ou Python, você pode montar pipelines robustos com poucos arquivos YAML.

Agora é sua vez:
👉 Teste os exemplos acima no seu projeto, adapte para o seu fluxo e compartilhe sua experiência nos comentários!

Se quiser ver mais exemplos avançados, como deploy para Heroku ou Vercel, é só pedir. 😉