Make this post a wiki
Roles
Prep Week: 2023-05-09 to 2023-05-13
Installer Maintainer
- Make releases of installer modules
- Tier 0 (no dependencies)
- Tier 1 (Dependencies on Tier 0)
- Tier 2 (Dependencies on Tier 1)
Release Owner
- Ensure headline features planned for the release have been merged or push them off to the next release.
- Translations:
-
Update locales in foreman develop:
make -C locale tx-update
- Ask plugin authors to start extracting i18n strings and pushing the changes into develop/master git branches so Transiflex can pick it up
- Announce string freeze date on Discourse and send announcement
- Update foreman-dev with translations status (click on Report) to encourage 100% translations before release
-
Update locales in foreman develop:
Stabilization Week: 2023-05-16 to 2023-05-20
Release Owner
- Announce start of stabilization week to discourse development category.
- Request new Hammer CLI release from maintainers if needed.
- Prepare the manual for the new version:
-
Change
$next
parameter on web class to point to the new version number. - Copy website manual content from nightly to 3.7 and update version numbers mentioned in it.
- Update installer options section of nightly manual using the get-params script
- Clean up deprecation and upgrade warnings from nightly manual for in both foreman.adoc and katello.adoc.
-
Change
- Add new languages that are at a reasonable completion on Transifex to develop
Release Engineer
- Create new GPG key for release. See GPG_Keys if needed.
-
Publish the key by exporting the GPG key
- Update the website’s security.md and create a file in static/keys
- Use upload_yum_gpg to create releases/3.7/RPM-GPG-KEY-foreman on yum.theforeman.org
-
Commit the settings file to the
theforeman-rel-eng
repository
-
Create new settings files for client, ensure it has the rights
OSES
list and commit it too. - Create mash configs in tool_belt using create_mash_configs and submit this as a PR.
- Once merged, deploy mash configuration on Koji using deploy_mash_configs
-
Update collection-mash-split.py
- Add a Katello version mapping
- Make any changes if needed (usually happens when there are tag changes)
- Deploy using
scp collection-mash-split.py root@koji.katello.org:/usr/local/bin
-
Open a PR with the result of jenkins-jobs branching:
./branch-foreman 3.7 KATELLO_VERSION
- Open PR to remove any jobs that are related to end of life versions
- Open PR to add 3.7 to Forklift versions config. Once the PR is merged, upgrade pipelines will fail, so do not merge it before packaging has been branched.
Branching: 2023-05-23
Release Engineer
- Branch RPM packaging using tool_belt
-
Clone tags and create build targets in Koji:
bundle exec ./tools.rb koji --commit configs/foreman/3.7.yaml
Note that you must use koji client < 1.30 since clone-tag was changed and our Koji server is too old. See Koji 1.30.0 Release notes — Koji 1.33.0 documentation for details. -
Create a
rpm/3.7
branch in foreman-packaging based onrpm/develop
-
Clone tags and create build targets in Koji:
- Branch Debian packaging
- Clone Debian nightly repos to 3.7 using copy/freight instructions
-
Create a
deb/3.7
branch in foreman-packaging based ondeb/develop
Release Owner
- Create 3.7-stable branches using branch_project
- Push 3.7-stable branches using branch_push
- Ask Hammer maintainer to branch hammer-cli and hammer-cli-foreman
The next step should only be done after all branching, including packaging, has completed.
-
Bump versions to 3.8-develop using [develop_branch_bump]
-
Push version bumps to 3.8-develop using [develop_branch_push]
-
Ask Hammer maintainer to bump hammer-cli and hammer-cli-foreman
-
Branch foreman-documentation git repository and update website for new release:
- Branch the github repository.
- Add the 3.7 in index page and versions with RC as a state
Preparing build systems: 2023-05-23
Release engineer
-
Update foreman-packaging rpm/develop to ensure nightlies build:
-
rpm/develop:
-
Update the build tag:
sed -i 's/fm3_7/fm3_8/g' package_manifest.yaml
-
Set to version
3.8.0
, reset release to1
inpackages/foreman/foreman{,-{installer,proxy,release,selinux}}/*.spec
andpackages/foreman/rubygem-hammer_cli{,_foreman}/*.spec
. Then create a changelog usingobal changelog --message '- Bump version to 3.8-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman}
-
Update the build tag:
-
deb/develop:
scripts/changelog.rb -v 3.8.0-1 -m "Bump changelog to 3.8.0 to match VERSION" debian/*/*/changelog
-
rpm/develop:
-
Prepare build systems for 3.7 release:
-
foreman-packaging’s rpm/3.7
-
Update
packages/foreman/foreman-release/foreman.gpg
,mock/*.cfg
,package_manifest.yaml
andrepoclosure/*.conf
-
Update
-
foreman-packaging’s deb/3.7
-
Update
debian/*/foreman-release/theforeman-archive-keyring.asc
from https://deb.theforeman.org/foreman.asc, you will only see changes if the key was recently updated.
-
Update
-
foreman-packaging’s rpm/3.7
-
Trigger the
foreman-packaging-rpm-3.7
job once, so that GitHub hooks are properly set up. -
Trigger the
foreman-packaging-deb-3.7
job once, so that GitHub hooks are properly set up.
Other systems: 2023-05-23
Release Owner
-
Create a
Foreman 3.8 Schedule and Planning
post on Development/Releases using schedule - Create Redmine versions
- Add next version number (3.8.0) and make sure it is shared with subprojects in foreman
- Ensure current Foreman deprecations for the next release are removed in develop
This was based on the wiki procedure and sometimes has a bit more info