Make this post a wiki (help)
Roles
When Ready to Release
Release Owner
- Request Hammer CLI Katello release from maintainers
- Request Virt Who Configure release from maintainers
- Request any other releases as needed from the release owners (consult the
:repos:section ofconfigs/katello/4.21.yaml) - Do Cherry-picks: Clone tool_belt
- If any minor versions of Katello have been added to Redmine since the last cherry-pick, make sure to include them in
prior_releasesin configs/katello/4.21.yaml - Run
./tools.rb setup-environment configs/katello/4.21.yaml - Run
GITHUB_ACCESS_TOKEN=<secret> ./tools.rb cherry-picks --version 4.21.0 configs/katello/4.21.yaml - Open a PR in Katello release branch. Make sure the PR name starts with [CP] to prevent our automations from adding it to Redmine issues.
- Using
git cherry-pick -xas needed, verify tickets in the cherry_picks_4.21.0 file are accounted for, or additionally cherry-pick them. Recommended: Do this in tool_belt’s checkout of Katello, inrep os/katello/4.21.0/katello. This way when you run cherry-picks again, tool_belt will be aware of any picks already completed. - For any cherry-picks that are not needed (including Redmine trackers) you can add them to the
:ignores:section oftool_beltinconfigs/katello/4.21.yaml
- If any minor versions of Katello have been added to Redmine since the last cherry-pick, make sure to include them in
- Update Katello Transifex translations:
-
grunt i18n:extractin the katello/engines/bastion_katello directory -
make -C locale tx-pullin the katello directory -
grunt i18n:compilein the katello/engines/bastion_katello directory -
bundle exec rake plugin:gettext[katello]in the foreman directory -
bundle exec rake plugin:po_to_json[katello]in the foreman directory -
make -C locale mo-filesin the katello directory - Add any uncommitted translation files and open a PR to upstream’s KATELLO-4.21 (no Redmine issue needed)
-
- Close old Katello 4.21.x versions in Redmine using close_redmine_version
- Check for outdated deprecation warnings in the current and next release with
./tools.rb check-deprecation-warnings configs/katello/4.21.yaml. Follow the instructions in the output of the command. Don’t f
orget to create any Redmine issues needed! - Update the
3.19branch in foreman-documentation if there have been any release note or contributor additions since the previous release note update.
Otherwise, this section may be skipped.- Ensure release notes are correct
- Headline features: important features with a few sentences description each
- Upgrade notes: all important notices that users must be aware of before upgrading
- Deprecations: features that will be removed or changed in a future version
- Using redmine_release_notes (see [README](https://github.com/theforeman/foreman-documentati
on/blob/3.19/guides/doc-Release_Notes/README.md) as well):./guides/doc-Release_Notes/redmine_release_notes katello 4.21.0 > ./guides/doc-Release_Notes/topics/katello-4.21.0.adoc - Add
topics/katello-4.21.0.adoctoguides/doc-Release_Notes/master.adoc:sed '/x.y.z releases here/a include::topics/katello-4.21.0.adoc[leveloffset=+1]' master.adoc - Update katello-contributors.adoc with the list of contributors using
git log -- since="<YYYY-MM-DD of previous major release branching>" --format="%an" | sort | uniq. Manually clean up any erroneous entries. - Submit this as a PR
- Ensure release notes are correct
- Open a PR (or use cherry-pick PR) against the release branch which updates
lib/katello/version.rbto 4.21.0:-
git pullto make sure you have the latest changes -
sed '/VERSION/ s/".\+"/"4.21.0"/' lib/katello/version.rb - Update/add the CHANGELOG.md file:
GITHUB_ACCESS_TOKEN=<secret> ./tools.rb changelog --version 4.21.0 configs/katello/4.21.yaml - Commit:
git commit -m "Release 4.21.0" - Ensure that the commit above is the last commit and there are no commits after it. This is the commit that will get tagged. (Rearrange commits with
git rebase -iif needed.)
-
- Once the PR is merged, perform the following in the Katello release branch (the real one, not your fork):
- Create upstream remote:
git remote add upstream https://github.com/Katello/katello.git - Fetch upstream remote:
git fetch upstream - Checkout upstream release branch:
git checkout upstream/KATELLO-4.21 - Tag:
git tag -s -m "Release 4.21.0" 4.21.0 - Push:
git push --follow-tags upstream HEAD:KATELLO-4.21(Must be pushed directly to the release branch, as pull request merges will not preserve tags.) - Generate .mo translation files:
make -C locale all-moin the katello directory - Generate source gem:
gem build katello.gemspec - Ensure you have login, password, and two factor authentication set up for rubygems.org
- Push gem:
gem push katello-4.21.0.gem
- Create upstream remote:
- Inform the delivery team that the gem is published
Once Source is Available
Note it is considered good practice to release on a day when the next day is a working day. This means no releases on Fridays or on the day before a holiday.
Release Engineer
- Wait for Foreman 3.19.0 GA to be packaged and built before proceeding
- Update release version similar to here
- Update
katello,katello-reposandrubygem-katello- Use bump_rpm_packaging:
PROJECT=katello VERSION=4.21 ./bump_rpm_packaging - Set
pulpcore_versioninkatello-repos.specto the correct Pulpcore version and notnightly.
- Use bump_rpm_packaging:
- Merge packaging PR once job is green
- Use wait_packaging to wait for [Jenkins to build the packages](https://ci.theforeman.org/job/foreman-packaging-rpm-3.19-releas
e/) - Sign the RPMs in the release
- Use release_pipeline to kick off the release pipeline
Once release is out
Release Owner
- Wait for Foreman 3.19.0 GA to be announced before proceeding
- Confirm response that the build succeeded (or if necessary, do more cherry-picks and version bumps repeating the steps above)
- Test the install and upgrade documentation for both the Katello server and smart proxy
- Post a release announcement
- Create and upload release specific developer stable box
- Remove references to the oldest Katello version from testKatello.groovy and katello-pipelines.yml
.