Katello 4.9 branching process


One Month Prior to Branch Date

Release Owner

  • Start attending upstream release sync meetings and giving updates
  • Announce upcoming branching to Discourse development category a month before
  • Update Katello Transifex translations:
    • Create a Transifex account and join the Foreman team
    • Spin up a Foreman and Katello installation
    • Configure the Transifex client
    • Install grunt
    • grunt i18n:extract in the katello/engines/bastion_katello directory
    • tx pull --minimum-perc 50 --all in the katello directory
    • make -C locale tx-pull in the katello directory
    • grunt i18n:compile in the katello/engines/bastion_katello directory
    • bundle exec rake plugin:gettext[katello] in the foreman directory
    • make -C locale mo-files in the katello directory
    • Open a PR to Katello (no Redmine issue needed) - #10535 - Update translations

Three Weeks Prior to Branch Date

Release Owner

  • Ensure that issues requiring installer changes are merged

Two Weeks Prior to Branch Date

Release Owner

  • Add tool_belt config for new release:
    • Create a new yaml file using the nightly Katello config as a template: tool_belt configs
    • Manually update the following sections:
      • releases: update to current release. Move the previous ‘current’ release to prior_releases below.
      • prior_releases: Remove the oldest prior_release (check with that release owner first to see if there’s a reason it should stay)
      • mash_scripts: update Katello version number in all values
      • repos: Update branch names to current versions, including any new releases that need to happen
      • ignores: Delete all items from this list and start fresh (this will be used for cherry-picks later)
      • gpg-key: When it becomes available, get the new Foreman GPG key for the corresponding Foreman version (example here and put the last 8 characters here
      • tags: update Katello version number in all values. Check the nightly config to see if any tags/repos need to be updated
    • Open a PR to tool_belt with the new config file
  • Ensure stable Pulp release
  • Coordinate with installer maintainers that expected changes are completed.
  • Review the Foreman schedule and planning (example) and note the date of the first scheduled release candidate.

Release Engineer

  • Ensure tool_belt config is merged and output from ./tools.rb koji configs/katello/4.9.yaml matches expectations

On Branch Date

Release Owner

  • Create KATELLO-4.9 branches
  • Bump versions to 4.10-master
  • Bump Katello related packages to their next versions
  • Generate and post the release procedure, if not already posted:
  • Prepare “Katello Next” and future redmine versions
    • Rename the “Katello Next” release to Katello 4.10.0
    • Recreate the “Katello Next” release and indicate that it is a placeholder for issues belonging to the next version of Katello
    • Create the “Katello 4.9.1 TODO” custom query using the last one as a template

Release Engineer

  • Run ./tools.rb koji configs/katello/4.9.yaml --confirm from tool_belt to create Koji tags
  • Run ./tools.rb mash-scripts configs/katello/4.9.yaml from tool_belt to create Koji mash configs and open PR to tool_belt to commit
  • Copy mash configs to Koji scp mash_scripts/katello/4.9/*.mash root@koji.katello.org:/etc/mash/
1 Like

@ekohl has some PRs our to automate the creation of the Katello tool_belt config:

Let’s use these during the Katelo 4.9 branching and leave some comments on how the automation works out.

1 Like

+1 I am excited to see how these work and make this part of the release easier.

We’re going to need to do the new webpack translation extractions that were introduced in this PR: Fixes #36330 - Fix plugin translations in frontend · theforeman/foreman@e848148 · GitHub

Looks like we just need to run bundle exec rake plugin:po_to_json[katello]

More translation stuff – I think we need to move make -C locale mo-files to the release process and have it run right before creating the gem. That way the mo files don’t make it into our repository. I’ll add a git add -f since that mo-files command is completely a no-op due to the .gitignore.

This one is important as well Refs #36330 - Place assets into plugin dir · theforeman/foreman@8fd2bf4 · GitHub .

1 Like

@wbclark I ended up doing a lot of the branching steps to keep in sync with Foreman’s branching, but I don’t have access to the Katello repos themselves. Please proceed with those steps.