Katello 4.11.0.rc1 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.11.yaml)

  • Check for outdated deprecation warnings in the current and next release with ./tools check-deprecation-warnings configs/katello/4.11.yaml. Follow the instructions in the output of the command. Don’t forget to create any Redmine issues needed!

  • Update the 3.9 branch in foreman-documentation

    • 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.11.0 > ./guides/doc-Release_Notes/topics/katello-4.11.0.adoc
    • Add topics/katello-4.11.0.adoc to guides/doc-Release_Notes/master.adoc: sed '/x.y.z releases here/a include::topics/katello-4.11.0.adoc[leveloffset=+1]' master.adoc
    • Make sure katello-contributors.adoc is updated
    • 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.11.0.rc1:

    • git pull to make sure you have the latest changes
    • sed '/VERSION/ s/".\+"/"4.11.0.rc1"/' lib/katello/version.rb
    • Update/add the CHANGELOG.md file: GITHUB_ACCESS_TOKEN=<secret> ./tools changelog --version 4.11.0.rc1 configs/katello/4.11.yaml
    • Commit: git commit -m "Release 4.11.0.rc1"
    • 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.11
    • Tag: git tag -s -m "Release 4.11.0.rc1" 4.11.0.rc1
    • Push: git push --follow-tags (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 a working login and password at rubygems.org
    • Push gem: gem push katello-4.11.0.rc1.gem
  • Inform the delivery team that the gem is published

Once Source is Available

Release Engineer

Once release is out

Release Owner

  • 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
  • Post a release announcement

@Zhunting @Odilhao are the release engineering steps all set here?

The release pipeline didn’t work. Though I think @Odilhao will know more on that part, but the rest of the steps are completed.

The plugins release is failing at the moment, and the katello release pipeline is trying to clone the wrong version of Foreman-packaging, the packages are ready to be release when Jenkins goes green.

@Zhunting @Odilhao I’m blocked on releasing Katello 4.11 at the moment due to a modular metadata issue with the Foreman repo:

[root@centos8-stream-katello-4-11 ~]# dnf module list --enabled
Last metadata expiration check: 0:31:08 ago on Fri 08 Dec 2023 02:31:03 PM UTC.
terminate called after throwing an instance of 'libdnf::ModulePackageContainer::ResolveException'
  what():  Failed to update from string: Parser error
Aborted (core dumped)

I disabled all repos except AppStream and BaseOS on CentOS 8 Stream and enabled repos until I hit the error – Foreman was the one to cause it.

https://yum.theforeman.org/releases/3.9/el8/x86_64/repodata/67de65abb9f4a135aff2ca22e5978c75f42f28f54cf39ecf94f8e0ccdb0ff86f-modules.yaml.zst

I’m updating my box now, hopefully it’s just a dnf related issue. Especially since the pipelines are passing.

Update: yum update did not fix it…

The zst module was not supposed to be there anymore, one sec