Folha de consulta de GitHub Actions
Uma referência de GitHub Actions pesquisável e imprimível: gatilhos de workflow, jobs, steps, expressões, matrizes, cache e workflows reutilizáveis. Grátis.
Workflow skeleton & triggers
12.github/workflows/ci.yml
name: CI
on: push
on: { push: { branches: [main] } }
on: { push: { tags: ["v*"] } }
on: pull_request
on: { pull_request: { paths: ["src/**"] } }
on: { schedule: [{ cron: "0 6 * * 1" }] }
on: workflow_dispatch
workflow_dispatch: { inputs: { env: { type: choice, options: [dev, prod] } } }
on: { release: { types: [published] } }
on: workflow_call
Jobs & runners
12jobs: { build: { runs-on: ubuntu-latest } }
runs-on: [macos-latest / windows-latest]
runs-on: [self-hosted, linux, x64]
needs: build
needs: [lint, test]
if: github.ref == 'refs/heads/main'
container: node:22
services: { redis: { image: redis:7, ports: ["6379:6379"] } }
outputs: { sha: ${{ steps.vars.outputs.sha }} }
needs.build.outputs.sha
defaults: { run: { working-directory: app } }
strategy: { fail-fast: false }
Steps & popular actions
14- uses: actions/checkout@v4
- uses: actions/checkout@v4 with fetch-depth: 0
- uses: actions/setup-node@v4 with node-version: 22
- uses: actions/setup-python@v5 with python-version: "3.12"
- uses: shivammathur/setup-php@v2 with php-version: "8.3"
- run: npm ci && npm test
- run: | (multiline)
- name: Build
- id: vars
echo "sha=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
echo "PATH_EXTRA=/opt/bin" >> "$GITHUB_ENV"
- uses: actions/upload-artifact@v4
- uses: actions/download-artifact@v4
continue-on-error: true
Expressions & contexts
14${{ github.ref }}
${{ github.ref_name }}
${{ github.sha }}
${{ github.event_name }}
${{ github.actor }}
${{ github.repository }}
${{ github.event.pull_request.number }}
${{ secrets.API_KEY }}
${{ vars.SITE_URL }}
${{ env.NODE_ENV }}
${{ runner.os }} / ${{ runner.temp }}
${{ steps.vars.outputs.sha }}
contains(), startsWith(), format()
GITHUB_TOKEN
Conditionals & matrix
11if: success() / failure() / always()
if: cancelled()
if: github.event_name == 'push'
if: startsWith(github.ref, 'refs/tags/')
if: contains(github.event.head_commit.message, '[skip e2e]')
strategy: { matrix: { node: [20, 22] } }
matrix: { os: [ubuntu-latest, macos-latest], node: [20, 22] }
${{ matrix.node }}
matrix: { include: [{ os: ubuntu-latest, node: 23, experimental: true }] }
matrix: { exclude: [{ os: macos-latest, node: 20 }] }
max-parallel: 2
Caching & artifacts
11- uses: actions/cache@v4
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: | npm-
path: ~/.npm
setup-node@v4 with cache: npm
setup-python@v5 with cache: pip
upload-artifact@v4 with name/path
upload-artifact: retention-days: 5
download-artifact@v4 (no name)
if-no-files-found: error
Cache limit: 10 GB per repo
Environments & permissions
11permissions: { contents: read }
permissions: { contents: write, pull-requests: write }
permissions: { id-token: write }
environment: production
environment: { name: prod, url: https://app.example.com }
Environment protection rules
env: { NODE_ENV: production }
secrets.GITHUB_TOKEN
Settings > Secrets and variables > Actions
Org secrets with repo allowlists
pull_request_target: use with care
Reusable workflows & composite actions
11on: { workflow_call: { inputs: ..., secrets: ... } }
jobs: { ci: { uses: org/repo/.github/workflows/ci.yml@v1 } }
uses: ./.github/workflows/ci.yml
with: { node-version: 22 }
secrets: inherit
${{ inputs.node-version }}
action.yml with runs: { using: composite }
steps: - run: ... shell: bash
uses: ./.github/actions/setup
inputs/outputs in action.yml
Nesting limit: 4 levels of reusable calls
Concurrency & timeouts
9concurrency: { group: deploy, cancel-in-progress: true }
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
timeout-minutes: 15 (job level)
timeout-minutes: 5 (step level)
retry via nick-fields/retry@v3
jobs.<id>.strategy.max-parallel
if: always() on cleanup steps
Scheduled runs can be delayed/skipped
Common recipes
12on: push: tags: ["v*"] + softprops/action-gh-release@v2
on: push: paths: ["apps/api/**"]
dorny/paths-filter@v3
peaceiris/actions-gh-pages@v4
docker/build-push-action@v6
docker/login-action@v3 with ghcr.io
aws-actions/configure-aws-credentials@v4 (OIDC)
appleboy/ssh-action@v1
codecov/codecov-action@v4
github/codeql-action
dependabot.yml + auto-merge workflow
schedule + stale action
Debugging
12Secret ACTIONS_STEP_DEBUG = true
Secret ACTIONS_RUNNER_DEBUG = true
Re-run jobs > Enable debug logging
act
act -j build
act -s GITHUB_TOKEN=$(gh auth token)
echo "::debug::message"
echo "::error file=app.js,line=1::Oops"
echo "::group::Install" ... "::endgroup::"
$GITHUB_STEP_SUMMARY
mxschmitt/action-tmate@v3
cat "$GITHUB_EVENT_PATH"
gh CLI for Actions
13gh run list
gh run list --workflow ci.yml
gh run watch
gh run view 123456 --log
gh run view --log-failed
gh run rerun 123456 --failed
gh run cancel 123456
gh run download 123456
gh workflow list
gh workflow run ci.yml -f env=prod
gh workflow disable ci.yml
gh secret set API_KEY
gh cache list / gh cache delete
Nenhuma entrada corresponde a “:q”.
Sobre Folha de consulta de GitHub Actions
Esta folha de referência do GitHub Actions condensa o YAML de workflows numa única página pesquisável: o esqueleto do workflow e os triggers, jobs e runners, steps e actions populares, expressões e contexts, condicionais e matrix builds, cache e artifacts, environments e permissões, workflows reutilizáveis e composite actions, concorrência e timeouts, receitas comuns, depuração, e os comandos da CLI gh para Actions.
Os ficheiros de workflow são, na sua maioria, sintaxe memorizada (que trigger dispara numa tag, como referenciar um secret, a expressão if que salta um step numa fork, o padrão de chave de cache para um lockfile), por isso cada linha mostra o fragmento YAML com uma explicação de uma linha.
A folha é gratuita e executada no lado do cliente: filtre linhas em tempo real com a caixa de pesquisa, salte entre secções com o índice fixo, copie qualquer fragmento com um clique e imprima a página como referência de secretária.
Como usar Folha de consulta de GitHub Actions
- Percorra as secções, desde o Esqueleto do workflow & triggers e Jobs & runners até à CLI gh para Actions.
- Pesquise por uma palavra-chave como matrix, secrets ou cache para filtrar todas as linhas em tempo real.
- Salte para Receitas comuns para adaptar um job de build, teste ou deploy já pronto.
- Clique num fragmento YAML ou no respetivo ícone de cópia para o copiar para o seu ficheiro de workflow.
- Imprima a folha para uma referência do GitHub Actions offline.