Releasing Uyuni versions - uyuni-project/uyuni GitHub Wiki

Requirements

Procedure

Some days before the release

  1. Check all the tests: everything should be green, in particular the acceptance testsuite or otherwise release must be approved by QA (later).
  2. Lock the master branch (check the checkbox for Restrict who can push to matching branches)
  3. Lock the main branch for the uyuni-tools as well (check the checkbox for Restrict who can push to matching branches)
  4. Send an email to galaxy-devel informing that the branch master is locked, and adjust the topic on the slack #team-susemanager channel
  5. Ask the Doc Squad to submit an update of the doc package to systemsmanagement:Uyuni:Master, a PR for the main documention and ReportDB documentation at the documentation repository, gh-pages branch and a PR for the documentation API repository, gh-pages branch.
  6. Confirm that the documentation is ready.
  7. After the branch freeze, ask Orion to prepare the PR for the code translations from master-weblate to master. If nobody from Orion is available, ask Pascal Arlt.
  8. Quick review changelogs with tito-wrapper, and request changes if needed.
  9. Starting from the master branch at your local git clone (make sure it's updated!)
    • Adjust the version number in web/conf/rhn_web.conf (web.version.uyuni)

    • Check if the susemanager-schema package has a migration path to the new version (first check schema/spacewalk/susemanager-schema.spec and take note of the Version value (in format X.Y.Z), then see if there is a directory schema/spacewalk/upgrade/susemanager-schema-X.Y.Z-to-susemanager-schema-X.Y.Z+1 with contents). E.g.: if current version for package is 4.4.10, then after tagging the package version will be 4.4.11, so there should be a folder susemanager-schema-4.4.10-to-susemanager-schema-4.4.11

      If not:

      • Create a new directory for the database migration scripts in schema/spacewalk/upgrade
      • Create an empty file called .gitkeep in it (otherwise the empty directory couldn't be added to git)
      • Add the directory to git, commit, push back to the remote of current branch
    • Check if the susemanager-schema package has a migration path between the last SUSE Manager version (as of today 4.3.X) and the latest version of the susemanager-schema there, and the newest X.Y.0 version for susemanager-schema at Uyuni.

      For example, if latest SUSE Manager 4.3 schema version is 4.3.15, and Uyuni schemas are 4.4.X, then the following folder must exist in master: susemanager-schema-4.3.15-to-susemanager-schema-4.4.0

      If not:

      • Create a new directory for the database migration scripts in schema/spacewalk/upgrade
      • Create an empty file called .gitkeep in it (otherwise the empty directory couldn't be added to git)
      • Add the directory to git, commit, push back to the remote of current branch
    • Now repeat the same procedure, this time for the uyuni-reportdb-schema package (located at schema/reportdb). There must be migration paths to the new Uyuni reportdb schema versions, and to from the latest SUSE Manager.

    • Now you can start listing which packages need tagging:

      • tito-wrapper -c If there are errors, fix them. You can get more info about the commits for each package with tito report --untagged-commits, you can also focus on errors with tito-wrapper -g
      • Enter in every subproject that needs tagging and then:
        • Tag it:

          tito tag

          The entries for the changelog should be there when everybody followed this. All Bug, CVE and Fate numbers should be there.

          Notice an empty point is automatically created and you must remove it if you won't use it, as well as the empty line below it.

        • Follow the tito instructions: push tags to remote

  10. Check that the job uyuni-Master-releng-2obs job has packaged the whole tagging and submitted the changes from master branch into https://build.opensuse.org/project/show/systemsmanagement:Uyuni:Master (changes will propagate to the client tools for linked packages)
  11. Run rel-eng/uyuni-check-version at the Git repository, to check what other packages need changes and adjust them.
  12. Prepare the release notes PR, send it to be reviewed.
  13. Merge the release notes PR, submit the release notes to systemsmanagement:Uyuni:Master
  14. Prepare the PR for the website repository, master branch, including announcement at the main page, updates to the stable page, news page, new doc folder (PDFs) with doc and release notes.
  15. Prepare the email announcement and the twitter announcement, add them as comments to this card.
  16. Prepare a new snapshot as systemsmanagement:Uyuni:Snapshots:YYYY.MM. You can use systemsmanagement:Uyuni:Snapshots:2023.03 as base, but make sure you adjust the meta configuration to match the version and the expect Leap version used as base OS.
  17. Modify the meta configuration for systemsmanagement:Uyuni:Stable, so the promotion is done against the new Snapshot.

At the release date

  1. Check all the tests: everything should be green, in particular the acceptance testsuite or otherwise release must be approved by QA.
  2. Specifically, make sure everything is still building and server and proxy are installable.
  3. Run rel-eng/uyuni-check-version at the Git repository, to make sure nothing is missing
  4. Go to https://build.opensuse.org/project/show/systemsmanagement:Uyuni:Master and https://build.opensuse.org/project/show/systemsmanagement:Uyuni:Master:Other and the client projects until everything is built.
  5. Release the packages:
    osc release systemsmanagement:Uyuni:Master
    osc release systemsmanagement:Uyuni:Master:ContainerUtils
    osc release systemsmanagement:Uyuni:Master:openSUSE_Leap_15-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:SLE12-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:SLE15-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:CentOS7-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:EL8-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:EL9-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:Ubuntu2004-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:Ubuntu2204-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:Debian11-Uyuni-Client-Tools
    osc release systemsmanagement:Uyuni:Master:Debian12-Uyuni-Client-Tools
    
  6. Wait until all packages are released, then release to the Snapshot:
    osc release systemsmanagement:Uyuni:Stable
    
  7. Merge the PRs for the site, the main doc and ReportDB, and the API doc.
  8. Review that the site, main doc and ReportDB, and the API doc were published
  9. Create a git branch (Uyuni-XXXX.YY), and push it
  10. Announce: mailing lists, twitter and Gitter (update the topic for the users channel)
  11. Unlock the master branch (uncheck the checkbox for Restrict who can push to matching branches)
  12. Unlock the main branch of uyuni-tools (uncheck the checkbox for Restrict who can push to matching branches)
  13. Send an email to galaxy-devel informing that the branch master is unlocked, and adjust the topic on the slack #team-susemanager channel

24h after the release

  1. Update the test container images

:information_source: We wait 24h release to give time to the opensuse mirrors to be in sync.