GitHub Actions é a plataforma nativa de CD do GitHub que executa workflows automáticos disparados por eventos no repositório.
Anatomia de um Workflow
Todo workflow é um arquivo YAML dentro de .github/workflows/. O GitHub detecta qualquer arquivo nessa pasta automaticamente.
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Instalar dependências
run: npm install
- name: Rodar testes
run: npm testConceitos centrais:
on: o gatilho. Pode serpush,pull_request,schedule(cron),workflow_dispatch(manual via UI) ou um evento de outro workflow.jobs: unidades de execução que rodam em paralelo por padrão. Useneedspara encadear.steps: sequência de comandos dentro de um job. Um step que falha interrompe o job inteiro.runs-on: o sistema operacional do runner.ubuntu-latestcobre a maioria dos casos;self-hostedusa sua própria máquina.
Montando a Esteira
Jobs encadeados com needs formam a esteira sequencial:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install ruff && ruff check .
test:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install pytest && pytest
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: docker build -t myapp:${{ github.sha }} .
env:
REGISTRY: ${{ vars.REGISTRY_URL }}
deploy:
needs: build
runs-on: ubuntu-latest
environment: production
steps:
- run: ./scripts/deploy.sh
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}Se lint falha, o pipeline para. test, build e deploy não chegam a rodar.
Segredos e Variáveis
Credenciais nunca ficam no código. O GitHub separa em dois escopos:
- Secrets (
secrets.NOME): valores criptografados, nunca expostos nos logs. Use para tokens de API, senhas e chaves. - Variables (
vars.NOME): valores visíveis, sem criptografia. Use para flags de ambiente, nomes de cluster, URLs não-sensíveis.
Ambos são configurados em Settings > Secrets and variables > Actions no repositório. Secrets de organização podem ser compartilhados entre vários repositórios.
Reutilizando Lógica
Para não duplicar YAML entre repositórios, o GitHub Actions oferece dois formatos:
Composite Actions: agrupam steps repetidos em um action.yml dentro do próprio repositório. Qualquer workflow chama com uses: ./.github/actions/nome-da-action.
Reusable Workflows: um workflow inteiro que outros workflows invocam com uses: org/repo/.github/workflows/ci.yml@main. Útil quando times diferentes precisam do mesmo pipeline sem copiar o arquivo.
Conexões
- CD é o conceito que o GitHub Actions implementa
- DevOps é a cultura que motiva o uso da ferramenta
- Docker é o formato de empacotamento mais comum nos jobs de build
- ArgoCD complementa o CD: o GitHub Actions publica a imagem; o ArgoCD faz o deploy no Kubernetes
- Container Registry armazena as imagens construídas no job de build
- terraform pode ser aplicado como step no pipeline para provisionar infraestrutura