We use goreleaser
to release new packages.
Once the commit we want to release at, is tagged, the release workflow executes, which will:
- Generate the build artefacts
- Create a new release in Github
- Create a new branch from
puppetlabs/main
calledmaint/main/release_prep_<VER>
(e.g.maint/main/release_prep_0.5.0
) - Ensure the
CHANGELOG
is up-to-date and contains entries for any user visible new features / bugfixes. This should have been added as part of each ticket's work, but sometimes things are missed:
Compare the changes between
main
and the latest release tag:For example: https://github.com/puppetlabs/pct/compare/0.5.0..main
- Rename
[Unreleased]
to the version we are releasing and create a new[Unreleased]
header at the top of theCHANGELOG
:
## [Unreleased]
## [0.5.0]
- [(GH-123)](https://github.com/puppetlabs/pct/issues/123) New feature in 0.5.0
- [(GH-567)](https://github.com/puppetlabs/pct/issues/567) Bug fix in 0.5.0
- Update the links at the bottom of the
CHANGELOG
with the new release version and update the[Unreleased]
tag to compare from the version we're releasing now againstmain
:
[Unreleased]: https://github.com/puppetlabs/pct/compare/0.5.0..main
[0.5.0]: https://github.com/puppetlabs/pct/releases/tag/0.5.0
[0.4.0]: https://github.com/puppetlabs/pct/releases/tag/0.4.0
...
- Add and commit these changes
- Create a PR against
main
:- Tag:
maintenance
- Tag:
- Wait for the tests to pass
- Request a colleage to review and merge
After the release prep PR has been merged, perform a git fetch
and git pull
and ensure you are on the merged commit of the release prep that has just landed in puppetlabs:main
.
Tag the merged commit and push to puppetlabs
:
git tag -a <VER> -m "PCT <VER>"
git push <remote> <VER>
For example, assuming:
- Locally configured remote repo name for
puppetlabs
:origin
- Version:
0.5.0
git tag -a 0.5.0 -m "PCT 0.5.0"
git push origin 0.5.0
This should trigger the release worfklow to perform the release. Ensure the workflow completes, then move on to the final steps.
- Ensure that there is a new release for the version we tagged in Releases, with:
- The correct version
- The expected number of build artefacts
- Perform a quick test locally to ensure that the installation instructions in the README work and that the latest version is installed on your local system / test system
- Repeat the above steps for the Telemetry free version