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.