Writing release notes
- Update manual if applicable for any additional installation steps
-
Draft release notes in markdown (example), with these sections (and do not use personal pronouns):
- Headline features: half a dozen important features with a few sentences description each
- Upgrade notes: all important notices that users must be aware of before upgrading
- Release notes: bullet point list by category of most changes, excluding bug fixes for issues introduced during the release cycle, include link to bug numbers. You can auto-generate changes using the ‘changelog’ command in tool_belt
- CLI release notes are taken from the hammer-cli and hammer-cli-foreman changelogs
- Link to installer changelogs and note versions being used
- Get the apipie doc and place it in api/1.22
Preparing code
- Request Hammer CLI releases from maintainers if desired
-
Make patch releases of installer modules that have important changes
- Branch to MAJ.MIN-stable if recent changes to the module aren’t suitable for patch (x.y.z) release
- Compare tagged packages in nightly vs. release koji tag and re-tag any updated dependencies that are required
- Add a new Redmine version for the next minor, unless the series is EOL. Be sure the version is set to sharing with subprojects.
- Remove/change release field for any open Redmine tickets assigned to the release still (next minor, unset it or reject)
- Change Redmine version 1.22.0 state to Closed
- List all issues targeted at the release, order by Closed date ascending and use git cherry-pick -x to cherry pick from develop to 1.22.0-stable branch
-
Clone tool_belt and run:
-
./tools.rb setup-environment configs/foreman/1.22.yaml
-
./tools.rb cherry-picks --version 1.22.0 configs/foreman/1.22.yaml
- Verify tickets in the cherry_picks_1.22.0 file are accounted for or additional cherry pick them
-
Tagging a release
-
In foreman 1.22-stable:
- Make sure test_1_22_stable is green
-
run
make -C locale tx-update
(if Transifex has not switched to the next major release yet, usually after .2) -
run
script/sync_templates.sh
-
update template snapshots with
rake snapshots:generate RAILS_ENV=test
and verify changes are expected - change VERSION to 1.22.0
-
Run
extras/changelog
-
Commit:
git commit -am "Release 1.22.0"
-
Tag:
git tag -s -m "Release 1.22.0" 1.22.0
-
Push:
git push --follow-tags
-
In smart-proxy 1.22-stable:
- Make sure test_proxy_1_22_stable is green
- change VERSION to 1.22.0
-
Run
extra/changelog
-
Commit:
git commit -am "Release 1.22.0"
-
Tag:
git tag -s -m "Release 1.22.0" 1.22.0
-
Push:
git push --follow-tags
-
In foreman-selinux 1.22-stable:
- change VERSION to 1.22.0
-
Run
extras/changelog
-
Commit:
git commit -am "Release 1.22.0"
-
Tag:
git tag -s -m "Release 1.22.0" 1.22.0
-
Push:
git push --follow-tags
-
In foreman-installer 1.22-stable:
- change VERSION to 1.22.0
-
Commit:
git commit -am "Release 1.22.0"
-
Tag:
git tag -s -m "Release 1.22.0" 1.22.0
-
Push:
git push --follow-tags
- Run the Jenkins Tarballs Release to create tarballs
- Download, inspect, sign and upload detached signatures
Note: If for some reason there was an issue with the tarballs that required uploading new tarballs, CDN cache should be invalidated so that the builders use the updated tarballs.
Packaging a release
- Update foreman-packaging rpm/1.22 and deb/1.22 branches
- Trigger release_packages in Jenkins by calling release_packages
- Download, sign, upload RPM signatures and upload RPMs
- Trigger release_mash if it wasn’t already
- If mashing didn’t, trigger release_test
- If testing didn’t, trigger release_push_deb and release_push_rpm by calling promote_staging