Make this post a wiki (help)
Roles
- Release Owner: @Griffin-Sullivan
- Release Engineer: @pcreech
- Installer Maintainer: @
Prep Week: 2024-02-06 to 2024-02-10
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: 2024-02-13 to 2024-02-17
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.10 and update version numbers mentioned in it.
cp -r manuals/nightly manuals/3.10
cp -r _includes/manuals/nightly _includes/manuals/3.10
sed -i 's/nightly/3.10/i' manuals/3.10/*.md
sed -i '/previous_version/ s/: .\+/: "3.10"/' manuals/nightly/index.md
sed -i '/- nightly/a \ \ - "3.10"' _config.yml
- 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.
- generate_gpg
- export_gpg_private to back up
- sign_gpg
- upload_gpg
- Publish the key
- Use export_gpg_public to show the GPG key and update the website’s security.md and create a file in static/keys
- Use upload_yum_gpg to create releases/3.10/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. - Open a PR with the result of jenkins-jobs branching:
./branch-foreman 3.10 KATELLO_VERSION
- Open PR to remove any jobs that are related to end of life versions
- Open PR to add 3.10 to Forklift versions config. Once the PR is merged, upgrade pipelines will fail, so do not merge it before packaging has been branched.
Branching: 2024-02-20
Release Engineer
- Branch RPM packaging
- Create a
rpm/3.10
branch in foreman-packaging based onrpm/develop
:git checkout rpm/develop && git pull && git checkout -b rpm/3.10
- Update
foreman_version
inpackage_manifest.yaml
on therpm/3.10
branch:sed -i '/foreman_version:/ s/nightly/3.10/' package_manifest.yaml
- Update
katello_version
inpackage_manifest.yaml
on therpm/3.10
branch:sed -i '/katello_version:/ s/nightly/KATELLO_VERSION_HERE/' package_manifest.yaml
- Create release repositories in Copr by forking nightly repositories
obal copr-project copr_projects
on therpm/3.10
branch - Push the
rpm/3.10
branch
- Create a
- Branch Debian packaging
- Clone Debian nightly repos to 3.10 using copy/freight instructions
- Create a
deb/3.10
branch in foreman-packaging based ondeb/develop
Release Owner
- Create 3.10-stable branches using branch_project
- Push 3.10-stable branches using branch_push
- Branch foreman-documentation git repository and update website for new release by following the README instructions
- 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.11-develop using develop_branch_bump
- Push version bumps to 3.11-develop using develop_branch_push
- Ask Hammer maintainer to bump hammer-cli and hammer-cli-foreman
Preparing build systems: 2024-02-20
Release engineer
- Merge the earlier created jenkins-jobs PR that creates the release pipelines
- Update foreman-packaging rpm/develop to ensure nightlies build:
- rpm/develop:
- Update the build tag:
sed -i 's/fm3_10/fm3_11/g' package_manifest.yaml
- Set to version
3.11.0
, reset release to1
:sed -i '/^Version:/ s/[0-9\.]\+$/3.11.0/ ; /^%global release/ s/[0-9]\+$/1/' packages/foreman/foreman{,-{installer,proxy,release,selinux}}/*.spec packages/foreman/rubygem-hammer_cli{,_foreman}/*.spec
- Create a changelog using
obal changelog --message '- Bump version to 3.11-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman}
- Commit:
git commit -a -m 'Bump version to 3.11-develop'
- Update the build tag:
- deb/develop:
scripts/changelog.rb -v 3.11.0-1 -m "Bump changelog to 3.11.0 to match VERSION" debian/*/*/changelog
- rpm/develop:
- Prepare build systems for 3.10 release:
- foreman-packaging’s rpm/3.10
- Update
packages/foreman/foreman-release/foreman.gpg
,mock/*.cfg
,package_manifest.yaml
andrepoclosure/*.conf
- Update
- foreman-packaging’s deb/3.10
- 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.10
- Trigger the
foreman-packaging-rpm-3.10
job once, so that GitHub hooks are properly set up. - Trigger the
foreman-packaging-deb-3.10
job once, so that GitHub hooks are properly set up.
Other systems: 2024-02-20
Release Owner
- Generate and post the release procedure, if not already posted:
- Use procedure_release: `PROJECT=foreman VERSION=3.10 ./procedure_release “2024-02-20” “@Griffin-Sullivan” “@”
- Post the output in Development/Releases using
Foreman 3.10.0-rc1 release process
- Create the 3.10.0-rc release procedure in Development/Releases:
PROJECT=foreman VERSION=3.10 ./procedure_release 2024-02-20 '@Griffin-Sullivan' '@' | wl-copy
- Create a
Foreman 3.11 Schedule and Planning
post on Development/Releases using schedule:./schedule 2024-02-21
(make sure there are no conflicts with other important dates) - Create Redmine version 3.11.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.