Foreman 3.9 branching process

Make this post a wiki (help)


Prep Week: 2023-11-07 to 2023-11-11

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: 2023-11-14 to 2023-11-18

Release Owner

Release Engineer

Branching: 2023-11-21

Release Engineer

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

Release Owner

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

Preparing build systems: 2023-11-21

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_9/fm3_10/g' package_manifest.yaml
      • Set to version 3.10.0, reset release to 1 in packages/foreman/foreman{,-{installer,proxy,release,selinux}}/*.spec and packages/foreman/rubygem-hammer_cli{,_foreman}/*.spec. Then create a changelog using obal changelog --message '- Bump version to 3.10-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman}
    • deb/develop: scripts/changelog.rb -v 3.10.0-1 -m "Bump changelog to 3.10.0 to match VERSION" debian/*/*/changelog
  • Prepare build systems for 3.9 release:
    • foreman-packaging’s rpm/3.9
      • Update packages/foreman/foreman-release/foreman.gpg, mock/*.cfg, package_manifest.yaml and repoclosure/*.conf
    • foreman-packaging’s deb/3.9
  • Trigger the foreman-packaging-rpm-3.9 job once, so that GitHub hooks are properly set up.
  • Trigger the foreman-packaging-deb-3.9 job once, so that GitHub hooks are properly set up.

Other systems: 2023-11-21

Release Owner

  • Generate and post the release procedure, if not already posted:
  • Create the 3.9.0-rc release procedure in Development/Releases: PROJECT=foreman VERSION=3.9 ./procedure_release 2023-11-21 '@Griffin-Sullivan' '@ekohl' | wl-copy
  • Create a Foreman 3.10 Schedule and Planning post on Development/Releases using schedule: ./schedule 2023-11-22 (make sure there are no conflicts with other important dates)
  • Create Redmine version 3.10.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.

1 Like

Some installer PRs:

I also see puppet-git is listed, but we no longer ship this: Drop puppet-git from Puppet modules to release by ekohl · Pull Request #299 · theforeman/theforeman-rel-eng · GitHub

I’m about to sign off, but updating on the installer situation. Technically this should have been done last week, but there were some complications.

Today we finally got installer nightly builds green again. While I didn’t intend to, I think I mostly got Puppet 8 support sorted. Ensure Puppet 8 support by ekohl · Pull Request #899 · theforeman/foreman-installer · GitHub has the TODO list. Given we haven’t tested it in pipelines yet, it’ll be labeled as experimental.

Other than that a bunch of release PRs for tier 1 Puppet modules:

I haven’t submitted the PRs yet to allow these newer versions on the reverse dependencies.

For puppet-pulpcore I’m debating a release even if it doesn’t add support for Pulpcore 3.39 (Fixes #36902 - Support Pulpcore 3.39, drop older versions by ianballou · Pull Request #315 · theforeman/puppet-pulpcore · GitHub). That depends on, Add packages for pulpcore 3.39.2 release by Odilhao · Pull Request #747 · theforeman/pulpcore-packaging · GitHub & Update python-pulpcore to 3.39.2 by Odilhao · Pull Request #744 · theforeman/pulpcore-packaging · GitHub (in that order).

1 Like

What’s the status on the branching? Based on the list here, we haven’t started yet? Thanks for the update.

In the last meeting we decided to wait for Pulp 3.39 (Release Teem Meeting 2023-11-22 - #3 by ekohl). Due to the US holidays this was complicated a bit, mostly because we didn’t have anyone to merge the Katello PR itself. Thankfully @jeremylenz did that, which set the update in motion. In we had some discussion, but that was mostly unrelated issues.

The current status is that the pipeline failed:

Ok, thanks for the quick update. With failing tests, I guess it’s hard to tell, when the branching will happen. This is important for maintainers to know, because we are de-facto prolonging the stabilization and we should not merge risky things meanwhile.

Here are the PRs to update translations:

I haven’t carefully reviewed them myself yet. A lot of my time was spent on just updating my bulk update script to do the right thing and convert a plugin config here and there.

1 Like

I messed them up initially, but I’ve gone through them and reviewed them. They should now be good. We also merged i18n - extracting new, pulling from tx by Griffin-Sullivan · Pull Request #9912 · theforeman/foreman · GitHub so core translations are also updated. I didn’t go through CLI yet.