
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.
📋 Table of Contents
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%.
🔗 Share this article
✍️ Leave a Comment