If the release PR description was changed by a human after releaser-pleaser fetched the PR for the first time, releaser-pleaser would revert the users changes accidentally. This commit introduces an additional check right before updating the pull request description, to make sure we do not accidentally loose user changes. There is still the potential for a conflict in between us checking the description is the same, and updating the description. The time window for this should be reduced from multiple seconds-minutes to a few hundred milliseconds at most. In case a conflict is detected, we retry the whole process up to 2 times, to make sure that the users changes are reflected as soon as possible. This is especially important on GitLab CI/CD because a changed pull (merge) request description does not cause another job to run. With this change, the branch is still pushed, as the user is not expected to make any changes to it. Fixes #151 |
||
|---|---|---|
| .github | ||
| cmd/rp | ||
| docs | ||
| internal | ||
| templates | ||
| .gitattributes | ||
| .gitlab-ci.yml | ||
| .golangci.yaml | ||
| .ko.yaml | ||
| action.yml | ||
| CHANGELOG.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| prbody.go | ||
| prbody_test.go | ||
| README.md | ||
| releaserpleaser.go | ||
releaser-pleaser
releaser-pleaser is a tool designed to automate versioning and changelog management for your projects. Building on the concepts of release-please, it streamlines the release process through GitHub Actions or GitLab CI.
Features
- Automated Pull Requests: Opens a PR when releasable changes are detected.
- Smart Versioning: Suggests new versions based on conventional commits and semantic versioning.
- Version Reference Updates: Automatically updates committed version references in the PR.
- Changelog Generation: Creates new changelog entries based on commits.
- Automated Releases: Upon PR merge, creates tags and GitHub/GitLab Releases with appropriate messages.
- Version Overrides: Allows manual override of the suggested version.
- Prerelease Support: Offers options to create alpha, beta, or release candidate versions.
releaser-pleaser simplifies release management, allowing maintainers to focus on development while ensuring consistent and well-documented releases.
Relation to release-please
After using
release-please for 1.5 years, I've found it to be the best tool for low-effort releases currently available. While I appreciate many of its features, I identified several additional capabilities that would significantly enhance my workflow. Although it might be possible to incorporate these features into
release-please, I decided to channel my efforts into creating a new tool that specifically addresses my needs.
Key differences in releaser-pleaser include:
- Support for multiple forges (both GitHub and GitLab)
- Better support for pre-releases
One notable limitation of
release-please is its deep integration with the GitHub API, making the addition of support for other platforms (like GitLab) a substantial undertaking.
releaser-pleaser aims to overcome this limitation by design, offering a more versatile solution for automated release management across different platforms and project requirements.
License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).