Grimpen de GitHub Actions – Estrutura padrão e uma lista das ações mais úteis
Um pouco sobre as ações comuns do GitHub e sua estrutura.
GitHub Actions é uma plataforma de automação e CI/CD dentro do GitHub, usada para compilar, testar e implantar seu código com base em eventos como pushes, pull requests ou em um horário agendado.
Além do padrão do GitHub, você pode usar o GitHub Actions em um servidor Gitea auto-hospedado.

As Actions abrangem ferramentas oficiais, da comunidade e de terceiros, apoiando a automação desde compilações e testes até implantação, gerenciamento de lançamentos, QA e notificações.
Este resumo cobre a estrutura do GitHub Actions, uma breve descrição e as ações mais comuns usadas em fluxos de trabalho de código aberto e comerciais. Faz parte de Ferramentas de Desenvolvedor: O Guia Completo para Fluxos de Trabalho de Desenvolvimento Moderno.
Estrutura Básica de Configuração
Os Fluxos de Trabalho (Workflows) do GitHub Actions são definidos em arquivos YAML localizados no diretório .github/workflows dentro do repositório.
name: Workflow Name
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run tests
run: npm test
- O bloco on especifica os eventos de gatilho.
- Cada job é executado em seu próprio runner.
- steps podem executar comandos de shell ou chamar ações reutilizáveis.
Componentes Principais do Fluxo de Trabalho
| Componente | Descrição |
|---|---|
| Workflow | Processo automatizado (YAML) acionado por um evento |
| Event | Atividade que aciona o fluxo de trabalho (push, pull_request, etc.) |
| Job | Série de etapas executadas em um runner, pode ser executado sequencialmente ou em paralelo |
| Step | Cada comando ou ação em um job |
| Runner | VM ou container onde os jobs são executados |
| Action | Extensão/adicionável reutilizável encapsulando uma tarefa |
Eventos de Gatilho
- push
- pull_request
- schedule (usando sintaxe cron)
- workflow_dispatch (gatilho manual, permite parâmetros de entrada)
- release, issue, etc.
Exemplo:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
Ações Úteis Integradas
| Ação | Propósito | Parâmetros Comuns |
|---|---|---|
| actions/checkout | Fazer checkout do código do repositório | ref, token, submodules, persist-credentials |
| actions/setup-node | Configurar ambiente Node.js | node-version, cache, architecture, check-latest |
| actions/setup-python | Configurar Python | python-version, architecture |
| actions/cache | Cache de dependências | path, key, restore-keys |
| docker/build-push-action | Compilar e enviar imagens Docker | context, file, platforms, tags, push, build-args |
| actions/upload-artifact | Enviar artefatos de build | name, path, if-no-files-found |
| actions/download-artifact | Baixar artefatos | name, path |
| github/email-actions | Enviar notificações por e-mail | to, subject, content, attachments |
| peter-evans/create-pull-request | Criar PRs via workflow | branch, title, body, labels, base |
| actions/github-script | Executar JavaScript arbitrário no seu workflow | script, github-token |
Parâmetros de Ação
Parâmetros Gerais para Qualquer Chamada de Ação:
- name: Some Action or Step
uses: owner/repo@ref
with:
param1: value
param2: value
env:
ENV_VAR: value
if: ${{ condition }}
run: command_to_run
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: argumentos passados para a ação (consulte a documentação da ação para todas as opções)
- env: variáveis de ambiente para a etapa
- if: execução condicional
- run: comandos de shell (se não estiver usando uma ação)
- shell: shell usado para executar a etapa
- continue-on-error: prosseguir mesmo que a etapa falhe
Definindo Entradas Personalizadas de Ação
Na metadados da sua ação (action.yml):
inputs:
example-input:
description: 'An example input'
required: false
default: 'default-value'
Quando usado em um fluxo de trabalho:
- uses: my/action@v1
with:
example-input: 'custom-value'
Acessado como variável de ambiente INPUT_EXAMPLE_INPUT quando a ação é executada.
Exemplo: Fluxo de Trabalho com Parâmetros Manuais
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to environment
run: echo "Deploying to ${{ github.event.inputs.environment }}"
Marketplace de Ações
- Milhares de ações reutilizáveis estão disponíveis no GitHub Marketplace.
- As categorias incluem: implantações em nuvem, ferramentas de notificação, frameworks de teste, análise de código e muito mais.
- Explore: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact e muitos outros.
Dicas Rápidas
- Coloque os arquivos de fluxo de trabalho em
.github/workflows. - Use workflow_dispatch com inputs para execuções manuais e parametrizadas.
- Use a ação cache para acelerar a instalação de dependências.
- Use a matrix de jobs para testar múltiplas versões de SO/ambiente de execução.
- Use segredos para dados sensíveis, referenciados como
${{ secrets.SECRET_NAME }}.
Este cheatsheet cobre os fundamentos de uso, configuração e extensão do GitHub Actions para automação, CI/CD e muito mais. Para mais detalhes e atualizações, consulte sempre a documentação oficial do GitHub e os repositórios de ações.
Ações Comuns do GitHub
Aqui está uma lista prática de Ações do GitHub frequentemente usadas que ajudam a automatizar CI/CD, testes, compilação, implantação e tarefas de fluxo de trabalho:
Ações Oficiais Principais
| Ação | Propósito | Exemplo de Parâmetros Chave |
|---|---|---|
| actions/checkout | Faz checkout do código do repositório | ref, submodules |
| actions/setup-node | Configura ambiente Node.js | node-version, cache |
| actions/setup-python | Configura ambiente Python | python-version |
| actions/setup-java | Configura JDK Java | distribution, java-version |
| actions/cache | Cacheia dependências e saídas de build | path, key, restore-keys |
| actions/upload-artifact | Envia artefatos de build | name, path |
| actions/download-artifact | Baixa artefatos do fluxo de trabalho | name, path |
| actions/github-script | Executa JavaScript usando contexto e API do GitHub | script |
| actions/create-release | Cria um lançamento no GitHub | tag_name, release_name |
| actions/upload-release-asset | Envia ativos para um lançamento | upload_url, asset_path |
| actions/labeler | Aplica rótulos automaticamente a issues/PRs | repo-token, configuration-path |
Ações Populares da Comunidade e de Terceiros
| Ação | Propósito |
|---|---|
| docker/build-push-action | Compilar e enviar imagens Docker |
| actions/setup-go | Configurar ambiente Go |
| super-linter/super-linter | Lint automatizado universal de código |
| trufflesecurity/trufflehog | Escanear segredos e credenciais |
| peaceiris/actions-gh-pages | Implantar sites estáticos no GitHub Pages |
| JamesIves/github-pages-deploy-action | Implantar projetos no GitHub Pages |
| peter-evans/create-pull-request | Criar pull requests automaticamente |
| softprops/action-gh-release | Criar e enviar Lançamentos do GitHub |
| ad-m/github-push-action | Enviar alterações de volta ao repositório do GitHub |
| actions/setup-dotnet | Configurar SDK .NET |
| azure/login | Autenticar no Azure |
| google-github-actions/auth | Autenticar no Google Cloud |
Ações de Teste, QA e Relatórios
| Ação | Propósito |
|---|---|
| actions/setup-ruby | Configurar ambiente Ruby |
| codecov/codecov-action | Enviar relatórios de cobertura de código para Codecov |
| coverallsapp/github-action | Enviar resultados de cobertura para Coveralls |
| dorny/test-reporter | Anexar resultados de testes aos GitHub Checks |
| stefanzweifel/git-auto-commit-action | Auto-commit e push de alterações de arquivos |
Ações de Implantação e Notificação
| Ação | Propósito |
|---|---|
| appleboy/scp-action | Enviar arquivos usando SCP |
| SamKirkland/FTP-Deploy-Action | Implantar arquivos via FTP/FTPS |
| cypress-io/github-action | Executar testes end-to-end Cypress |
| slackapi/slack-github-action | Enviar mensagens para Slack |
| dawidd6/action-send-mail | Enviar e-mails durante execuções de workflow |
Utilitários e Gerenciamento de Fluxo de Trabalho
| Ação | Propósito |
|---|---|
| peter-evans/repository-dispatch | Aciona fluxos de trabalho de repositórios externos |
| fregante/setup-git-user | Configura credenciais de usuário Git para commits |
| andymckay/labeler | Rotula issues e PRs com base em caminhos |
| actions/configure-pages | Configura publicação no GitHub Pages |
| EndBug/add-and-commit | Adiciona e commita arquivos dentro de um workflow |
| dangoslen/changelog-enforcer | Verifica se um changelog foi atualizado para PRs |
Como Encontrar Mais
Existem muitas Ações do GitHub que permitem a automação de fluxos de trabalho, como testes automatizados, implantação em produção, notificações e integrações com outros serviços. O GitHub Marketplace lista milhares de ações em categorias como teste, segurança, implantação, notificações, qualidade de código e integrações. Listas curadas como “Awesome Actions” também são ótimas para inspiração e descoberta.
Links Úteis
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT Cheatsheet
- Gitea - installing and testing
- Backup and restore Gitea server
- Using Gitea Actions deploy Hugo website to AWS S3
- Gitflow: Steps, Alternatives, Pros, and Cons
- DevOps with GitOps - Argo CD, Flux, Jenkins X, Weave GitOps and others