This plugin can be executed on every push to your release branch (e.g. default branch) and will create a new release pull-request with an updated changelog as preparation for the next release. After merging the "release"-pull-request, a new release / tag will be created for you.
Create a new workflow like .woodpecker/release-helper.yml
:
when:
event: push
branch: ${CI_REPO_DEFAULT_BRANCH}
steps:
release-helper:
image: woodpeckerci/plugin-ready-release-go:<version>
settings:
git_email: my-email@example.org
forge_token:
from_secret: GITHUB_TOKEN
# release_branch: 'custom-release-branch' # default: main
# pull_request_branch_prefix: 'next-release/'
# debug: true
The plugin automatically categorizes every pull-request based on it's labels.
The default labels are defined here.
To change it, create a release-config.ts
at the repository root and overwrite the changeTypes
property:
export default {
changeTypes: [
{
// CUSTOM LABEL CONFIG HERE
},
],
};
- Setup ready-release-go on your repository by adding a config file and a workflow file
- On every push to your default branch a pull-request will be created and updated
- You can review the pull-request and merge it when you are ready
- The plugin will create a new release
- get latest release => tag
- get all commits since commit of last tag
- get all prs of those commits (if they have a pr associated)
- get all labels of those prs
- get next version based on labels of PRs
- get changelog based on labels of PRs
- Automatically create release pull-request
- Automatically update release pull-request
- Create a release / tag after "release"-pull-request got merged
- Handle -rc versions
- Support first release (no previous tags)
- Support defining next version manually (can be done by changing the version on the release pull-request title / commit message)
- Support more forges:
- Github
- Gitea
- Forgejo (via gitea api client)
- Gitlab
- Bitbucket
This plugin is inspired by release-please, release-drafter and shipjs. Thanks for the great work! Compared to the mentioned tools ready-release-go
is not requiring a npm package and can be used with any kind of programming language, changelog tool and commit style.