GitHub Actions — CI/CD
Automação de build, teste e deploy direto no repositório. Os workflows ficam em .github/workflows/*.yml.
Conceitos
| Termo | O que é |
|---|---|
| Workflow | Arquivo YAML com a automação (disparado por eventos) |
| Job | Conjunto de steps que roda numa VM (runner) |
| Step | Um comando ou uma action |
| Action | Bloco reutilizável (ex.: actions/checkout) |
| Runner | Máquina que executa o job (ubuntu-latest etc.) |
Exemplo: testar um projeto Python
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install -r requirements.txt
- run: pytest -v
Exemplo: build e push de imagem Docker
name: Docker
on:
push:
tags: ['v*']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
username: $
password: $
- uses: docker/build-push-action@v6
with:
push: true
tags: usuario/app:latest
Exemplo: deploy via SSH
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@v1
with:
host: $
username: $
key: $
script: |
cd /opt/app
git pull
docker compose up -d --build
Boas práticas
- Nunca coloque senhas no YAML — use Settings → Secrets and variables → Actions.
- Rode testes em
pull_requestantes de permitir merge (branch protection). - Fixe a versão das actions (
@v4) para builds reproduzíveis. - Use
concurrencypara cancelar builds antigos do mesmo branch. - O GitHub Pages tem deploy nativo via
actions/deploy-pages.
Veja também: Git — Fluxo de trabalho · Docker