Standard release-please configuration for automated semantic versioning and changelog generation.
Standard Configuration
GitHub Actions Workflow
File: .github/workflows/release-please.yml
name: Release Please
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
with:
token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }}
Configuration Files
File: release-please-config.json
{
"packages": {
".": {
"release-type": "node",
"changelog-sections": [
{"type": "feat", "section": "Features"},
{"type": "fix", "section": "Bug Fixes"},
{"type": "perf", "section": "Performance"},
{"type": "deps", "section": "Dependencies"},
{"type": "docs", "section": "Documentation", "hidden": true},
{"type": "chore", "section": "Miscellaneous", "hidden": true}
]
}
},
"plugins": ["node-workspace"]
}
File: .release-please-manifest.json
{
".": "0.0.0"
}
Note: Version 0.0.0 is a placeholder - release-please updates this automatically.
Project Type Variations
Node.js Frontend/Backend
-
release-type:
node -
plugins:
node-workspace -
Updates:
package.jsonversion field
Python Service
-
release-type:
python -
Updates:
pyproject.tomlversion field,__version__in code
Infrastructure (Helm)
-
release-type:
helm -
Updates:
Chart.yamlversion field
Multi-package Repository
{
"packages": {
"packages/frontend": {
"release-type": "node",
"component": "frontend"
},
"packages/backend": {
"release-type": "node",
"component": "backend"
}
},
"plugins": [
"node-workspace",
{
"type": "linked-versions",
"groupName": "workspace",
"components": ["frontend", "backend"]
}
]
}
Required Components
Minimum Requirements
- Workflow file:
.github/workflows/release-please.yml
Uses googleapis/release-please-action@v4
-
Token:
MY_RELEASE_PLEASE_TOKENsecret -
Triggers on push to
main -
Config file:
release-please-config.json
Valid release-type for project
-
changelog-sections defined
-
Manifest file:
.release-please-manifest.json
Lists all packages with current versions
Token Configuration
The workflow uses MY_RELEASE_PLEASE_TOKEN secret (not GITHUB_TOKEN) because:
-
Allows release PRs to trigger other workflows
-
Enables CI checks on release PRs
-
Maintains proper audit trail
Compliance Checking
Status Levels
| PASS | All three files present with valid configuration
| WARN | Files present but using deprecated action version
| FAIL | Missing required files or invalid configuration
Validation Rules
- Workflow validation:
Action version: v4 (warn if older)
-
Token: Must use secret, not hardcoded
-
Trigger: Must include
pushtomain -
Config validation:
release-type: Must be valid (node, python, helm, simple)
-
changelog-sections: Must include feat and fix
-
Manifest validation:
Must be valid JSON
- Packages must match config
Protected Files
IMPORTANT: Release-please manages these files automatically:
-
CHANGELOG.md- Never edit manually -
Version fields in
package.json,pyproject.toml,Chart.yaml -
.release-please-manifest.json- Only edit for initial setup
See release-please-protection skill for enforcement.
Conventional Commits
Release-please requires conventional commit messages:
| feat:
| Minor
| feat: add user authentication
| fix:
| Patch
| fix: correct login timeout
| feat!:
| Major
| feat!: redesign API
| BREAKING CHANGE:
| Major
| In commit body
Installation
-
Create workflow file
-
Create config file
-
Create manifest file
-
Add
MY_RELEASE_PLEASE_TOKENto repository secrets -
Ensure pre-commit has conventional-pre-commit hook
Troubleshooting
Release PR Not Created
-
Check conventional commit format
-
Verify workflow has correct permissions
-
Ensure token has write access
Version Not Updated
-
Check manifest file is valid JSON
-
Verify release-type matches project
-
Review release-please logs in Actions
CI Not Running on Release PR
-
Token must be PAT, not GITHUB_TOKEN
-
Verify workflow trigger includes pull_request