This procedure was generated from procedures/foreman/branch.md.erb at 9f1c697aa41c515649c0fb07cff80f969791c048
Make this post a wiki (help)
Roles
- Release Owner: @ogajduse
- Release Engineer: @ogajduse
- Installer Maintainer: @arvind4501
Prep Week: 2026-07-27 to 2026-07-31
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:
- Setup Transifex CLI if not already installed: Follow the Transifex CLI documentation for installation and authentication setup
- Update locales in foreman develop:
make -C locale tx-update - Coordinate with plugin authors to extract i18n strings:
- Ask plugin authors to start extracting i18n strings and pushing the changes into develop/master git branches so Transifex can pick it up (send a message in the Matrix channel)
- Work with Transifex for translation status and announcements:
- Export translation statistics from Transifex (click on Report) and save as
foreman_foreman.languages.csv. See this help article on how to generate the report for all languages. - Post string freeze announcement to foreman-dev using string_freeze_announcement script:
./string_freeze_announcement foreman_foreman.languages.csv BRANCHING_DATE RC1_DATE RC2_DATE PLANNING_URLto encourage 100% translations before release - Send a project-level announcement on Transifex about the string freeze using transifex_announcement script:
./transifex_announcement GA_DATE SCHEDULE_URL PLANNING_URL
- Export translation statistics from Transifex (click on Report) and save as
- Track translation work in project management:
- Create Redmine issue for locale updates: Template link
Stabilization Week: 2026-08-03 to 2026-08-07
Release Owner
- Announce start of stabilization week to discourse development category.
- Request new Hammer CLI release from maintainers if needed.
- Update Hammer CLI packaging once the Hammer CLI release is ready:
- RPM: Update rubygem-hammer_cli and rubygem-hammer_cli_foreman in
rpm/5.0branch-
obal update rubygem-hammer_cli --version 5.0.0 -
obal update rubygem-hammer_cli_foreman --version 5.0.0
-
- DEB: Update packaging in
deb/developand cherry-pick the changes todeb/5.0-
deb/developis updated by automation, ensure that happened - Cherry-pick the changes to
deb/5.0
-
- RPM: Update rubygem-hammer_cli and rubygem-hammer_cli_foreman in
- Prepare the manual for the new version:
- Update installer options section of nightly manual using the get-params script
- Copy website manual content from nightly to 5.0 and update version numbers mentioned in it.
cp -r manuals/nightly manuals/5.0cp -r _includes/manuals/nightly _includes/manuals/5.0sed -i 's/nightly/5.0/i' manuals/5.0/*.mdsed -i '/previous_version/ s/: .\+/: "5.0"/' manuals/nightly/index.mdsed -i '/- nightly/a \ \ - "5.0"' _config.yml
- Clean up deprecation and upgrade warnings from nightly manual for in both foreman.adoc and katello.adoc.
- Commit the manual changes:
git commit -a -m "Add Foreman 5.0 manual and update nightly"and create a pull request
- 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 backup private key to gopass
- Publish the key
- Use export_gpg_public to export the clean GPG key and update the website’s security.md and create a file in static/keys
- Use upload_yum_gpg to create releases/5.0/RPM-GPG-KEY-foreman on yum.theforeman.org
- Sign and upload the key to the keyserver
- sign_gpg for web-of-trust only - do NOT re-import or back up the signed key
- upload_gpg to upload the public key to keyservers
- Make sure the settings file contains the right
OSESlist. It should match what is in the nightly settings file - Commit the settings file to the
theforeman-rel-engrepository with message:git commit -m "Foreman 5.0 settings"
- Create new settings files for client, ensure it has the rights
OSESlist and commit it too. - Open a PR with the result of jenkins-jobs branching:
./branch-foreman 5.0 KATELLO_VERSION - Open PR to remove any jobs that are related to end of life versions
- Open PR to add 5.0 to Forklift versions config. Once the PR is merged, upgrade pipelines will fail, so do not merge it before packaging has been branched.
Branching: 2026-08-11
Release Engineer
- Branch RPM packaging
- Create a
rpm/5.0branch in foreman-packaging based onrpm/develop:git checkout rpm/develop && git pull && git checkout -b rpm/5.0 - Update
foreman_versioninpackage_manifest.yamlon therpm/5.0branch:sed -i '/foreman_version:/ s/nightly/5.0/' package_manifest.yaml - Update
katello_versioninpackage_manifest.yamlon therpm/5.0branch: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_projectson therpm/5.0branch - Push the
rpm/5.0branch
- Create a
- Branch Debian packaging
- Clone Debian nightly repos to 5.0 using copy/freight instructions
- Create a
deb/5.0branch in foreman-packaging based ondeb/develop
Release Owner
- Create 5.0-stable branches using branch_project
- Push 5.0-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 5.1-develop using develop_branch_bump
- Push version bumps to 5.1-develop using develop_branch_push
- Create Redmine version 5.1.0 using create_redmine_version
- Ask Hammer maintainer to bump hammer-cli and hammer-cli-foreman
Preparing build systems: 2026-08-11
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/fm5_0/fm5_1/g' package_manifest.yaml - Set to version
5.1.0, reset release to1:sed -i '/^Version:/ s/[0-9\.]\+$/5.1.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 5.1-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman} - Commit:
git commit -a -m 'Bump version to 5.1-develop'
- Update the build tag:
- deb/develop:
scripts/changelog.rb -v 5.1.0-1 -m "Bump changelog to 5.1.0 to match VERSION" debian/*/*/changelog
- rpm/develop:
- Prepare build systems for 5.0 release:
- foreman-packaging’s rpm/5.0
- Update
packages/foreman/foreman-release/foreman.gpg,mock/*.cfg,package_manifest.yamlandrepoclosure/*.confand commit with message:git commit -a -m "Foreman 5.0 branching build updates". See example patch
- Update
- foreman-packaging’s deb/5.0
- Update
debian/*/foreman-release/theforeman-archive-keyring.ascfrom https://deb.theforeman.org/foreman.asc, you will only see changes if the key was recently updated, and commit with message:git commit -a -m "Foreman 5.0 keyring updates"
- Update
- foreman-packaging’s rpm/5.0
- Trigger the
foreman-packaging-rpm-5.0job once, so that GitHub hooks are properly set up. - Trigger the
foreman-packaging-deb-5.0job once, so that GitHub hooks are properly set up.
Other systems: 2026-08-11
Release Owner
- Create the 5.0.0-rc release procedure in Development/Releases:
PROJECT=foreman VERSION=5.0 ./procedure_release 2026-08-11 '@ogajduse' '@ogajduse' | wl-copy - Create a
Foreman 5.1 Schedule and Planningpost on Development/Releases using schedule:./schedule 2026-08-12(make sure there are no conflicts with other important dates) - Ask on Discourse Developers to remove Foreman deprecations for the next release in develop
This was based on the wiki procedure and sometimes has a bit more info.