PureTools

GitHub Actions: CI/CD Do Zero ao Deploy

PureTools Team· 8 min de leitura
GitHub Actions: CI/CD Do Zero ao Deploy

GitHub Actions: Seu Pipeline CI/CD Gratuito

GitHub Actions roda workflows em resposta a eventos (push, PR, schedule). É gratuito para repos públicos e vem com 2000 min/mês para repos privados.

Workflow Básico

name: CI
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - run: npm run lint
      - run: npm test

Conceitos Chave

ConceitoSignificado
WorkflowArquivo YAML em .github/workflows/
EventO que dispara o workflow
JobConjunto de steps (pode rodar em paralelo)
StepComando ou action individual
ActionUnidade reutilizável
SecretVariável criptografada

CI/CD Completo: Test → Build → Deploy

name: CI/CD
on:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci
      - run: npm run lint
      - run: npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci && npm run build
      - name: Deploy
        env:
          DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
        run: npx wrangler deploy --token $DEPLOY_TOKEN

Matrix Builds

strategy:
  matrix:
    node-version: [18, 20, 22]

Padrões Úteis

# Rodar apenas quando arquivos específicos mudam
on:
  push:
    paths: ['src/**', 'package.json']

# Agendado (cron)
on:
  schedule:
    - cron: '0 8 * * 1'  # Toda segunda às 8h UTC

# Trigger manual
on:
  workflow_dispatch:

Valide seu YAML: Formatador YAML — verifique a sintaxe do seu arquivo de workflow.