Katello 4.4 Branching Process

Hello community,

We’re a little less than 1 month out from the targeted Foreman 3.2 branching date, and hence the Katello 4.4 branching date as well. I’ve posted the Katello 4.4 branching process below. For more information about Foreman 3.2 release dates (which we try to match as closely as possible), see the following: Foreman 3.2 Schedule and Planning

One Month Prior to Branch Date (February 10th)

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
    • make -C locale tx-update in the katello directory
    • grunt i18n:compile in the katello/engines/bastion_katello directory
    • bundle exec rake plugin:gettext[katello] in the foreman directory
    • Commit the resulting files in the katello directory with a message like “i18n - pulling from tx”
    • Open a PR to Katello (no Redmine issue needed)

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.

Release Engineer

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

On Branch Date

Release Owner

  • Create KATELLO-4.4 branches

  • Bump versions to 4.5-master

  • Create PR to jenkins-jobs to add a mapping between the current Foreman and Katello release branches. Also remove the oldest mapping from the config. See this example.

  • Review the Foreman schedule and planning (example) and note the date of the first scheduled release candidate.

  • Generate and post the release procedure, if not already posted:

    • (Note that Katello uses dots instead of dashes for release candidates, e.g. 4.1.1.rc1 not 4.1.1-rc1)
    • Make sure to run ./tools.rb setup-environment first
    • Run ./tools.rb procedure release katello 4.4.0.rc1 2022-02-10 @iballou @zhunting in tool_belt
    • Post the output in Development with a “Releases” tag
  • Branch docs

    • Draft release notes in markdown (example), with these sections (and do not use personal pronouns):
      • Headline features: half a dozen important features with a few sentences description each
      • Upgrade notes: all important notices that users must be aware of before upgrading
      • Release notes: bullet point list by category of most changes, excluding bug fixes for issues introduced during the release cycle, include link to bug numbers. You can auto-generate changes using the changelog command in tool_belt (make sure to run the setup-environment command first)
      • Add contributor list on release notes page: git shortlog -s KATELLO-4.0..KATELLO-4.1
    • Create a pull request to theforeman/foreman-documentation:
      • Locate the Foreman documentation PR for the current version - example here
      • Add Katello-related content in the same file and base the PR off of the Foreman PR
  • Update API docs and open a PR with the changes:

    GITDIR=~/git  #directory containing theforeman.org git repo
    FOREMAN_APIPIE_LANGS=en rake apipie:cache
    cp -rf public/apipie-cache/* $GITDIR/theforeman.org/plugins/katello/$VERSION/api
    find $GITDIR/theforeman.org/plugins/katello/$VERSION/api -name "*.json" -type f -delete
    sed -i "/layout: /d" $GITDIR/theforeman.org/plugins/katello/$VERSION/api/index.md

Release Engineer

  • Run ./tools koji configs/katello/4.4.yaml from tool_belt to create Koji tags
  • Run ./tools mash-scripts configs/katello/4.4.yaml from tool_belt to create Koji mash configs and open PR to tool_belt to commit
  • Copy mash configs to Koji (/etc/mash)
  • Update the branch map in the mash script and deploy it to Koji
  • Add 4.4 to Forklift versions config
  • Add new Katello release job to foreman-infra
  • Update Katello PR pipeline with new version pipeline
1 Like