Foreman 3.10 branching process

Make this post a wiki (help)


Prep Week: 2024-02-06 to 2024-02-10

Installer Maintainer

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

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/
      • 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.
  • Add new languages that are at a reasonable completion on Transifex to develop

Release Engineer

Branching: 2024-02-20

Release Engineer

  • Branch RPM packaging
    • Create a rpm/3.10 branch in foreman-packaging based on rpm/develop: git checkout rpm/develop && git pull && git checkout -b rpm/3.10
    • Update foreman_version in package_manifest.yaml on the rpm/3.10 branch: sed -i '/foreman_version:/ s/nightly/3.10/' package_manifest.yaml
    • Update katello_version in package_manifest.yaml on the rpm/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 the rpm/3.10 branch
    • Push the rpm/3.10 branch
  • Branch Debian packaging

Release Owner

The next step should only be done after all branching, including packaging, has completed.

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 to 1: 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'
    • deb/develop: scripts/changelog.rb -v 3.11.0-1 -m "Bump changelog to 3.11.0 to match VERSION" debian/*/*/changelog
  • 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 and repoclosure/*.conf
    • foreman-packaging’s deb/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:
  • 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.

I think these PRs are candidates to make it in:

I went over the tier 1 modules this is the status:

For tier 2:

On the installer we’re a bit behind. I just realized we don’t support puppetlabs/apache 12.x, but now I already did a round of releases so I’m postponing that so we can branch tomorrow.

Tier 1:

Tier 2:

Tier 3:

Once the tier 3 PRs are merged I’ll submit the release PRs.

There was a also a Kafo 7.4.0 release (Release 7.4.0 by ekohl · Pull Request #371 · theforeman/kafo · GitHub) and packaged (Update ruby-kafo to 7.4.0 by github-actions[bot] · Pull Request #10449 · theforeman/foreman-packaging · GitHub & Update rubygem-kafo to 7.4.0 by ekohl · Pull Request #10450 · theforeman/foreman-packaging · GitHub). I missed this part for Puppet 8 support, which other than that works on Foreman 3.9 but was never announced (nor tested). I may cherry pick it back to 3.9.

This was marked as done, but not in practice so I’ve opened Reflect Foreman has branched 3.10 and nightly is now 3.11 by ekohl · Pull Request #2042 · theforeman/foreman-infra · GitHub

Weird I must have gotten confused with something else. Thanks!