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/maincalledmaint/main/release_prep_<VER>(e.g.maint/main/release_prep_0.5.0) -
Ensure the
CHANGELOGis 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
mainand the latest release tag:For example: https://github.com/puppetlabs/prm/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/prm/issues/123) New feature in 0.5.0
- [(GH-567)](https://github.com/puppetlabs/prm/issues/567) Bug fix in 0.5.0- Update the links at the bottom of the
CHANGELOGwith the new release version and update the[Unreleased]tag to compare from the version we're releasing now againstmain:
[Unreleased]: https://github.com/puppetlabs/prm/compare/0.5.0..main
[0.5.0]: https://github.com/puppetlabs/prm/releases/tag/0.5.0
[0.4.0]: https://github.com/puppetlabs/prm/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 "<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 "0.5.0"
git push origin 0.5.0This 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