Skip to content

Release Please

Workflow reutilizável de versionamento automático baseado em conventional commits. Detecta commits no branch main, cria/atualiza um Pull Request de release com bump de versão e CHANGELOG.md, e cria um GitHub Release ao fazer merge.

Trigger

yaml
on:
  workflow_call:

Chamado via uses: no workflow de release do repositório.

Inputs

Nenhum input é necessário. O Release Please lê a configuração diretamente dos arquivos release-please-config.json e .release-please-manifest.json no repositório chamador.

Secrets

Nenhum secret adicional é necessário. O workflow usa o GITHUB_TOKEN padrão via permissions.

Permissions

yaml
permissions:
  contents: write
  pull-requests: write
  • contents: write — para criar tags e releases.
  • pull-requests: write — para criar e atualizar o PR de release.

Outputs

OutputDescrição
release_created'true' se um release foi criado nesta execução
tag_nameNome da tag (ex: 1.2.3)
versionVersão do release

Esses outputs são usados pelos jobs subsequentes (ex: post-release, sync-develop) para decidir se devem executar.

Job: release-please

Executa em ubuntu-latest:

  1. Executa a action googleapis/release-please-action@v4.
  2. Se houver novos conventional commits desde o último release:
    • Cria ou atualiza um PR com o bump de versão e changelog.
  3. Quando o PR de release é mergeado:
    • Cria a tag Git e o GitHub Release.
    • Define os outputs release_created, tag_name e version.

Fluxo típico de release

feat: add new feature  ──┐
fix: resolve bug X       ├── commits no main
chore: update deps     ──┘


              Release Please detecta commits


              Cria/atualiza PR "chore: release 1.3.0"
              (com CHANGELOG.md atualizado)


              Merge do PR de release


              Tag 1.3.0 + GitHub Release criado

                    ┌──────┴──────┐
                    ▼             ▼
              post-release   sync-develop

Exemplo de uso

Apenas Release Please

yaml
# .github/workflows/release.yml
name: Release

on:
  push:
    branches: [main]

jobs:
  release-please:
    uses: middag-io/.github-private/.github/workflows/release-please.yml@workflows-v1

Com post-release e sync-develop

yaml
name: Release

on:
  push:
    branches: [main]

jobs:
  release-please:
    uses: middag-io/.github-private/.github/workflows/release-please.yml@workflows-v1

  post-release:
    needs: release-please
    if: needs.release-please.outputs.release_created == 'true'
    uses: middag-io/.github-private/.github/workflows/wp-plugin-post-release.yml@workflows-v1
    with:
      tag-name: ${{ needs.release-please.outputs.tag_name }}
      zip-name: wp-plugin-exemplo
    secrets: inherit

  sync-develop:
    needs: release-please
    if: needs.release-please.outputs.release_created == 'true'
    uses: middag-io/.github-private/.github/workflows/sync-develop.yml@workflows-v1

MIDDAG Tecnologia