Foreman 2.5.0-rc1 release process

Make this post a wiki

Manual updates: 2021-05-06

  • Update manual if applicable for any additional installation steps
  • Update release notes section in the manual:
    • Release notes: bullet point list by category of all changes, include link to bug numbers. You can auto-generate changes using the release notes script.
    • CLI release notes are taken from the hammer-cli and hammer-cli-foreman changelogs
    • Link to installer changelogs and note versions being used
    • 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
  • Update installer options section using the get-params script (Note: this step can only be done after packages are released)
  • Generate the apipie doc and place it in the api/2.5 directory

Preparing code: 2021-05-06

  • Make patch releases of installer modules that have important changes
    • Branch to MAJ.MIN-stable if recent changes to the module aren’t suitable for patch (x.y.z) release
  • Remove/change target version field for any open Redmine tickets assigned to the release still (next minor, unset it or reject)
  • Ensure that code in git matches issues fixed in 2.5.0-rc1 in redmine. issues.rb can be used to generate a comparison between the two.

Tagging a release: 2021-05-06

  • In foreman 2.5-stable:
    • Make sure test_2_5_stable is green
    • run make -C locale tx-update
    • Tag the release using tag.sh tag.sh 2.5.0-rc1 && git push upstream 2.5-stable --follow-tags
  • In smart-proxy 2.5-stable:
  • In foreman-selinux 2.5-stable:
    • Tag the release using tag.sh tag.sh 2.5.0-rc1 && git push upstream 2.5-stable --follow-tags
  • In foreman-installer 2.5-stable:
    • Tag the release using tag.sh tag.sh 2.5.0-rc1 && git push upstream 2.5-stable --follow-tags
  • Run the Jenkins Tarballs Release to create tarballs
    - [ ] Update release version similar to here The version is already set to 2.5.0-rc1
  • Sign Tarballs

Note: If for some reason there was an issue with the tarballs that required uploading new tarballs, CDN cache should be invalidated so that the builders use the updated tarballs.

Packaging a release: 2021-05-06

Background documentation

After the packages have been released

Debian is currently failing with the following error, I am investigating.

TASK [foreman_installer : Install foreman-installer] ************************************************************
fatal: [pipe-foreman-server-2.5-debian10]: FAILED! => changed=false 
  cache_update_time: 1620372814
  cache_updated: false
  msg: |-
    '/usr/bin/apt-get -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold"      install 'foreman-installer'' failed: E: Unable to correct problems, you have held broken packages.
  rc: 100
  stderr: |-
    E: Unable to correct problems, you have held broken packages.
  stderr_lines: <omitted>
  stdout: |-
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:
  
    The following packages have unmet dependencies:
     foreman-installer : Depends: ruby-kafo (>= 6.0.0) but it is not installable
                         Depends: ruby-kafo (< 7.0.0) but it is not installable
  stdout_lines: <omitted>

Seems the “dependencies” step from Debian Packaging - Foreman was not executed

Fixed, need to re-run the pipes once they fully end this run.

RC1 fails to install on EL8 (both Stream and not) due to missing of Restore DNF module management for PG on EL8 · theforeman/foreman-installer@280eea8 · GitHub in the release.

We could release the RC without EL8 support, or re-release an RC1.1 with that fix.

Yesterday I discussed that with @tbrisker over IRC. While we had a discussion about the exact puppetlabs/postgresql version, I noticed it only on the merged commit (Update modules for Foreman 2.5.0 · theforeman/foreman-installer@157bd6a · GitHub) since it was never submitted as a PR. In the future, pinning modules for releases should be submitted so the installer team can review it. I believe that would have prevented this from happening in the first place.

As for the specific change: I thought it wouldn’t break because the support wasn’t there, but we do force version 12 to be installed. Without the patch it then falls back to the naming as postgresql.org’s packages are installed. Since those repositories are unavailable, it fails to install.

Given that upgrade pipelines need a repository present, I think we should build a new RC with the fix included. I’m not a fan of RCx.y and am leaning to just releasing RC2. While 1.1 might sound like a nice fix, our bats test expects all projects to have the same version. So it means we need to bump all projects anyway. Then there’s no difference if we use RC1.1 or RC2. Sticking to integers keeps it simple.

As per the discussion on IRC we decided to go with the option to have RC2 with rebumping the versions in repos, retag and then redo the packaging steps. @tbrisker request you rebump and retag on Sunday, and packaging will happen on Monday.

Opened a new post for rc2 to make sure nothing gets missed:

1 Like