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: writecontents: write— para criar tags e releases.pull-requests: write— para criar e atualizar o PR de release.
Outputs
| Output | Descrição |
|---|---|
release_created | 'true' se um release foi criado nesta execução |
tag_name | Nome da tag (ex: 1.2.3) |
version | Versã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:
- Executa a action
googleapis/release-please-action@v4. - Se houver novos conventional commits desde o último release:
- Cria ou atualiza um PR com o bump de versão e changelog.
- Quando o PR de release é mergeado:
- Cria a tag Git e o GitHub Release.
- Define os outputs
release_created,tag_nameeversion.
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-developExemplo 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-v1Com 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