Ações do GitHub é a plataforma CI/CD mais popular em 2026 — integrada ao GitHub, com um enorme mercado de ações pré-fabricadas. Este guia cria um pipeline completo, desde o teste até a implantação, inteiramente em arquivos YAML em seu repositório.
📋 Table of Contents
- Como funcionam as ações do GitHub
- Construções de matriz (testar múltiplas versões)
- Dependências de cache
- Construindo e empurrando imagens Docker
- Implantação com Ambientes e Aprovações
- Gerenciando segredos
- Armazene segredos em
- Dicas de otimização
- Usar
- P: Ações do GitHub versus GitLab CI versus Jenkins?
- GitHub Actions torna CI/CD acessível com tudo definido em YAML em seu repositório. Este guia cobre o essencial: fluxos de trabalho de CI com construções de matriz, cache de dependência, construção de imagens Docker e implantação com aprovações de ambiente. O enorme mercado de ações pré-construídas significa que você raramente escreve coisas do zero. Comece com um fluxo de trabalho de teste simples, adicione tarefas de criação e implantação de forma incremental, armazene cache agressivamente para obter velocidade e use ambientes para controlar implantações de produção. É o caminho mais rápido para CI/CD profissional para projetos hospedados no GitHub.
Como funcionam as ações do GitHub
Os fluxos de trabalho residem em.github/workflows/*.yml. Cada fluxo de trabalho é acionado em eventos (push, pull request, agendamento) e contémempregos que rodam emcorredores (VMs hospedadas no GitHub). Os trabalhos contêmpassos — comandos shell ou reutilizáveis açõesFluxo de trabalho básico de CI.
Construções de matriz (testar múltiplas versões)
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main, develop]
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
- run: npm run build
Dependências de cache
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- run: npm test
# Runs 9 combinations (3 OS x 3 Node versions) in parallel
Construindo e empurrando imagens Docker
steps:
- uses: actions/checkout@v4
# setup-node has built-in caching
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm' # caches ~/.npm automatically
# Or cache manually for other tools
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
.venv
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
Implantação com Ambientes e Aprovações
name: Build and Push
on:
push:
branches: [main]
jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
Gerenciando segredos
jobs:
deploy:
runs-on: ubuntu-latest
needs: [test] # only deploy if tests pass
environment:
name: production # can require manual approval in repo settings
url: https://example.com
steps:
- uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.PROD_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /app
docker compose pull
docker compose up -d
Armazene segredos em
repo Configurações, depois Segredos e variáveis, depois Ações. Referencie-os como. Eles estão mascarados em registros e nunca expostos. Use segredos específicos do ambiente para preparação versus produção.${{ secrets.NAME }}Fluxos de trabalho reutilizáveis e ações compostas
steps:
- run: ./deploy.sh
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
Dicas de otimização
# Call a reusable workflow to avoid duplication
jobs:
call-shared:
uses: ./.github/workflows/shared-test.yml
with:
node-version: '20'
secrets: inherit
# shared-test.yml declares:
# on:
# workflow_call:
# inputs:
# node-version:
# type: string
Usar
- controlar a ordem dos trabalhos e executar trabalhos independentes em paralelo
needs:Dependências de cache - — a maior aceleração para a maioria dos pipelinesCancelar execuções desatualizadas:
- Use filtros de caminho:
concurrency: { group: ${{ github.ref }}, cancel-in-progress: true } - execute fluxos de trabalho somente quando arquivos relevantes forem alteradosFixar versões de ação
- ) para estabilidade e segurança (
@v4Perguntas Frequentes
P: Ações do GitHub versus GitLab CI versus Jenkins?
R: GitHub Actions se seu código estiver no GitHub – integração profunda e um grande mercado. GitLab CI para código hospedado no GitLab. Jenkins para máximo controle/auto-hospedagem ou necessidades empresariais complexas. Actions é o mais fácil para projetos GitHub.
P: O GitHub Actions é gratuito?
R: Os repositórios públicos recebem minutos grátis ilimitados. Os repositórios privados recebem uma cota mensal gratuita e pagam por minuto. Para a maioria dos projetos pequenos e de código aberto, é efetivamente gratuito.
P: Como posso acelerar fluxos de trabalho lentos?
R: Dependências de cache (maior vitória), execute jobs em paralelo com
, use filtros de caminho para ignorar execuções irrelevantes e cancelar execuções desatualizadas com grupos de simultaneidade. Identifique quais etapas são mais lentas primeiro.needs:P: Como posso exigir aprovação antes da implantação da produção?
R: Use ambientes GitHub com revisores necessários. Configure o
ambiente nas configurações do repositório para exigir aprovação manual — o trabalho de implantação é pausado até que um revisor aprovado confirme.productionP: Posso executar fluxos de trabalho de acordo com uma programação?
R: Sim — use
para execuções agendadas (compilações noturnas, trabalhos de limpeza, verificações periódicas). A sintaxe do Cron controla o tempo.on: schedule: - cron: '0 0 * * *'Conclusão
GitHub Actions torna CI/CD acessível com tudo definido em YAML em seu repositório. Este guia cobre o essencial: fluxos de trabalho de CI com construções de matriz, cache de dependência, construção de imagens Docker e implantação com aprovações de ambiente. O enorme mercado de ações pré-construídas significa que você raramente escreve coisas do zero. Comece com um fluxo de trabalho de teste simples, adicione tarefas de criação e implantação de forma incremental, armazene cache agressivamente para obter velocidade e use ambientes para controlar implantações de produção. É o caminho mais rápido para CI/CD profissional para projetos hospedados no GitHub.
GitHub Actions torna CI/CD acessível com tudo definido em YAML em seu repositório. Este guia cobre o essencial: fluxos de trabalho de CI com construções de matriz, cache de dependência, construção de imagens Docker e implantação com aprovações de ambiente. O enorme mercado de ações pré-construídas significa que você raramente escreve coisas do zero. Comece com um fluxo de trabalho de teste simples, adicione tarefas de criação e implantação de forma incremental, armazene cache agressivamente para obter velocidade e use ambientes para controlar implantações de produção. É o caminho mais rápido para CI/CD profissional para projetos hospedados no GitHub.
🔗 Share this article
✍️ Leave a Comment