🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

Guia CI/CD do GitHub Actions 2026: automatizar testes e implantação

⏱️3 min read  ·  471 words
GitHub Actions CI/CD Guide 2026: Automate Testing and Deployment

Ações do GitHubé a plataforma CI/CD mais usada em 2026. Gratuito para repositórios públicos e 2.000 minutos/mês para privados, ele automatiza testes, construção e implantação diretamente de seu repositório GitHub. Este guia cobre tudo, desde o primeiro fluxo de trabalho até a implantação em produção.

Conceitos Básicos

  • Fluxo de trabalho:Arquivo YAML em.github/workflows/
  • Evento:Gatilho (push, PR, agendamento, manual)
  • Trabalho:Conjunto de etapas executadas em um corredor
  • Etapa:Comando ou ação individual
  • Corredor:VM onde seu trabalho é executado (Ubuntu, Windows, macOS)

Primeiro fluxo de trabalho: teste em push

# .github/workflows/test.yml
name: Test

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Install dependencies
        run: |
          pip install -r requirements.txt

      - name: Run tests
        run: pytest --cov=. --cov-report=xml

      - name: Upload coverage
        uses: codecov/codecov-action@v4

Construções de matriz (testar múltiplas versões)

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.11', '3.12', '3.13']

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - run: pip install -r requirements.txt && pytest

Implantar na produção na tag

name: Deploy

on:
  push:
    tags: ['v*']

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: production

    steps:
      - uses: actions/checkout@v4

      - name: Build Docker image
        run: |
          docker build -t myapp:${{ github.ref_name }} .
          docker tag myapp:${{ github.ref_name }} registry.example.com/myapp:latest

      - name: Push to registry
        run: |
          echo ${{ secrets.REGISTRY_TOKEN }} | docker login registry.example.com -u ci --password-stdin
          docker push registry.example.com/myapp:latest

      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: deploy
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            docker pull registry.example.com/myapp:latest
            docker compose up -d

Dependências de cache (compilações mais rápidas)

      - name: Cache pip
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}

      - name: Cache node_modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}

Usando segredos

Armazene chaves de API em Configurações do GitHub > Segredos e variáveis ​​> Ações. Acesso em fluxos de trabalho com${{ secrets.MY_KEY }}. Os segredos nunca são impressos nos logs.

      - name: Send deploy notification
        run: |
          curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
            -H 'Content-type: application/json' \
            --data '{"text": "Deployed ${{ github.ref_name }}"}'

Conclusão

GitHub Actions elimina a necessidade de infraestrutura CI/CD separada. Comece com um fluxo de trabalho de teste simples, adicione construções de matriz e, em seguida, passe para a implantação automatizada acionada por tags. O cache reduz o tempo de construção em 50-80%.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা