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.

Conteúdo da página

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.

github actions flow

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.