Katello 4.2 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
  • 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 Packager

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

On Branch Date

Release Owner

  • Create KATELLO-4.2 branches

  • Bump versions to 4.3-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.2.rc1 <rc_release_date> in tool_belt
    • Post the output in Releases
  • Branch docs

    • Prepare release notes 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
      • Changelog: 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:

    VERSION=
    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 Packager

  • Run ./tools koji configs/katello/4.2.yaml from tool_belt to create Koji tags
  • Run ./tools mash-scripts configs/katello/4.2.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.2 to Forklift versions config
  • Add new Katello release job to foreman-infra
  • Update Katello PR pipeline with new version pipeline
1 Like