Katello 4.19.0 (GA) Release Process

Make this post a wiki (help)

Roles

When Ready to Release

Release Owner

  • Request Hammer CLI Katello release from maintainers
  • Request Virt Who Configure release from maintainers
  • Request any other releases as needed from the release owners (consult the :repos: section of configs/katello/4.19.yaml)
  • Do Cherry-picks: Clone tool_belt
    • If any minor versions of Katello have been added to Redmine since the last cherry-pick, make sure to include them in prior_releases in configs/katello/4.19.yaml
    • Run ./tools.rb setup-environment configs/katello/4.19.yaml
    • Run GITHUB_ACCESS_TOKEN=<secret> ./tools.rb cherry-picks --version 4.19.0 configs/katello/4.19.yaml
    • Open a PR in Katello release branch. Make sure the PR name starts with [CP] to prevent our automations from adding it to Redmine issues.
    • Using git cherry-pick -x as needed, verify tickets in the cherry_picks_4.19.0 file are accounted for, or additionally cherry-pick them. Recommended: Do this in tool_belt’s checkout of Katello, in repos/katello. This way when you run cherry-picks again, tool_belt will be aware of any picks already completed.
    • For any cherry-picks that are not needed (including Redmine trackers) you can add them to the :ignores: section of tool_belt in configs/katello/4.19.yaml
  • Update Katello Transifex translations:
    • grunt i18n:extract in the katello/engines/bastion_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
    • bundle exec rake plugin:po_to_json[katello] in the foreman directory
    • make -C locale mo-files in the katello directory
    • Add any uncommitted translation files and open a PR to upstream’s KATELLO-4.19 (no Redmine issue needed)
  • Change Redmine version 4.19.0 state to Closed using close_redmine_version: PROJECT=katello VERSION=4.19 ./close_redmine_version and enter your Redmine API Key when prompted.
  • Check for outdated deprecation warnings in the current and next release with ./tools.rb check-deprecation-warnings configs/katello/4.19.yaml. Follow the instructions in the output of the command. Don’t forget to create any Redmine issues needed!
  • Update the 3.17 branch in foreman-documentation if there have been any release note or contributor additions since the previous release note update. Otherwise, this section may be skipped.
    • Ensure release notes are correct
      • Headline features: important features with a few sentences description each
      • Upgrade notes: all important notices that users must be aware of before upgrading
      • Deprecations: features that will be removed or changed in a future version
    • Using redmine_release_notes (see README as well): ./guides/doc-Release_Notes/redmine_release_notes katello 4.19.0 > ./guides/doc-Release_Notes/topics/katello-4.19.0.adoc
    • Add topics/katello-4.19.0.adoc to guides/doc-Release_Notes/master.adoc: sed -i '/x.y.z releases here/a include::topics/katello-4.19.0.adoc[leveloffset=+1]' master.adoc
    • Update katello-contributors.adoc with the list of contributors using git log --since="<YYYY-MM-DD of previous major release branching>" --format="%an" | sort | uniq. Manually clean up any erroneous entries.
    • Submit this as a PR
  • Open a PR (or use cherry-pick PR) against the release branch which updates lib/katello/version.rb to 4.19.0:
    • git pull to make sure you have the latest changes
    • sed -i '/VERSION/ s/".\+"/"4.19.0"/' lib/katello/version.rb
    • Update/add the CHANGELOG.md file: GITHUB_ACCESS_TOKEN=<secret> ./tools.rb changelog --version 4.19.0 configs/katello/4.19.yaml
    • Commit: git commit -m "Release 4.19.0"
    • Ensure that the commit above is the last commit and there are no commits after it. This is the commit that will get tagged. (Rearrange commits with git rebase -i if needed.)
  • Once the PR is merged, perform the following in the Katello release branch (the real one, not your fork):
    • Create upstream remote: git remote add upstream https://github.com/Katello/katello.git
    • Fetch upstream remote: git fetch upstream
    • Checkout upstream release branch: git checkout upstream/KATELLO-4.19
    • Tag: git tag -s -m "Release 4.19.0" 4.19.0
    • Push: git push --follow-tags upstream HEAD:KATELLO-4.19 (Must be pushed directly to the release branch, as pull request merges will not preserve tags.)
    • Generate .mo translation files: make -C locale all-mo in the katello directory
    • Generate source gem: gem build katello.gemspec
    • Ensure you have login, password, and two factor authentication set up for rubygems.org
    • Push gem: gem push katello-4.19.0.gem
  • Inform the delivery team that the gem is published

Once Source is Available

Note it is considered good practice to release on a day when the next day is a working day. This means no releases on Fridays or on the day before a holiday.

Release Engineer

Once release is out

Release Owner

  • Wait for Foreman 3.17.0 GA to be announced before proceeding
  • Confirm response that the build succeeded (or if necessary, do more cherry-picks and version bumps repeating the steps above)
  • Test the install and upgrade documentation for both the Katello server and smart proxy
    • Testing fresh installation (recommended: use forklift for automated testing)
      • Ensure you’re in a forklift checkout
      • Bring up a fresh CentOS Stream 9 box: vagrant up centos9-stream
      • Install Katello using foreman-installer: vagrant ssh centos9-stream -c "sudo foreman-installer --scenario katello"
      • Verify the installation succeeded:
        • Check Foreman version: vagrant ssh centos9-stream -c "rpm -q foreman" (should show 3.17)
        • Check Katello version: vagrant ssh centos9-stream -c "rpm -q katello" (should show 4.19.0)
      • Test basic Katello functionality:
        • Create a test product: vagrant ssh centos9-stream -c "hammer product create --organization Default --name 'Test Product'"
        • Create a test repository: vagrant ssh centos9-stream -c "hammer repository create --organization Default --product 'Test Product' --name 'Test Repo' --content-type yum --url https://fixtures.pulpproject.org/rpm-with-modules/"
        • Synchronize the repository: vagrant ssh centos9-stream -c "hammer repository synchronize --organization Default --product 'Test Product' --name 'Test Repo'"
        • Verify sync completed successfully: vagrant ssh centos9-stream -c "hammer repository info --organization Default --product 'Test Product' --name 'Test Repo'"
          • Should show content counts including RPMs, modulemds, and errata
      • Clean up test VM: vagrant destroy -f centos9-stream
    • Testing upgrade from previous version (recommended: use forklift for automated testing)
      • Ensure you’re in a forklift checkout directory
      • Identify the previous version stable box (e.g., centos9-stream-katello-18)
      • Bring up the previous version box: vagrant up centos9-stream-katello-18
      • Stop all services: vagrant ssh centos9-stream-katello-18 -c "sudo foreman-maintain service stop"
      • Upgrade system packages to the new version: vagrant ssh centos9-stream-katello-18 -c "sudo dnf upgrade -y"
      • Run the Katello installer to complete the upgrade: vagrant ssh centos9-stream-katello-18 -c "sudo foreman-installer --scenario katello --tuning development"
        • Watch for any error messages or warnings during Pulp migrations
      • Verify the upgrade succeeded:
        • Check Foreman version: vagrant ssh centos9-stream-katello-18 -c "rpm -q foreman" (should show 3.17)
        • Check Katello version: vagrant ssh centos9-stream-katello-18 -c "rpm -q katello" (should show 4.19.0)
      • Test basic Katello functionality post-upgrade:
        • Create a test product: vagrant ssh centos9-stream-katello-18 -c "hammer product create --organization Default --name 'Test Product'"
        • Create a test repository: vagrant ssh centos9-stream-katello-18 -c "hammer repository create --organization Default --product 'Test Product' --name 'Test Repo' --content-type yum --url https://fixtures.pulpproject.org/rpm-with-modules/"
        • Synchronize the repository: vagrant ssh centos9-stream-katello-18 -c "hammer repository synchronize --organization Default --product 'Test Product' --name 'Test Repo'"
        • Verify sync completed successfully and content counts are reasonable (should show RPMs, modulemds, and errata)
      • Clean up test VM: vagrant destroy -f centos9-stream-katello-18
  • Post a release announcement
  • Create and upload release specific developer stable box
  • Remove references to the oldest Katello version from jenkins-jobs: testKatello.groovy and katello-pipelines.yml.