Foreman 1.21.1 Release process

Writing release notes

  • Update manual if applicable for any additional installation steps
  • Draft release notes in markdown (example), with these sections (and do not use personal pronouns):
    • Upgrade notes: all important notices that users must be aware of before upgrading
    • Release notes: 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
    • CLI release notes are taken from the hammer-cli and hammer-cli-foreman changelogs
    • Link to installer changelogs and note versions being used

Preparing code

  • Request Hammer CLI releases from maintainers if desired
  • 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
  • Compare tagged packages in nightly vs. release koji tag and re-tag any updated dependencies that are required
  • Add a new Redmine version for the next minor, unless the series is EOL. Be sure the version is set to sharing with subprojects.
  • Remove/change release field for any open Redmine tickets assigned to the release still (next minor, unset it or reject)
  • Change Redmine version 1.21.1 state to Closed
  • List all issues targeted at the release, order by Closed date ascending and use git cherry-pick -x to cherry pick from develop to 1.21.1-stable branch
  • Clone tool_belt and run:
    • ./tools.rb setup-environment configs/foreman/1.21.yaml
    • ./tools.rb cherry-picks --version 1.21.1 configs/foreman/1.21.yaml
    • Verify tickets in the cherry_picks_1.21.1 file are accounted for or additional cherry pick them

Tagging a release

  • In foreman 1.21-stable:
    • Make sure test_1_21_stable is green
    • run make -C locale tx-update (if Transifex has not switched to the next major release yet, usually after .2)
    • run script/sync_templates.sh
    • update template snapshots with rake snapshots:generate RAILS_ENV=test and verify changes are expected
    • change VERSION to 1.21.1
    • Run extras/changelog
    • Commit: git commit -am "Release 1.21.1"
    • Tag: git tag -s -m "Release 1.21.1" 1.21.1
    • Push: git push --follow-tags
  • In smart-proxy 1.21-stable:
    • Make sure test_proxy_1_21_stable is green
    • change VERSION to 1.21.1
    • Run extra/changelog
    • Commit: git commit -am "Release 1.21.1"
    • Tag: git tag -s -m "Release 1.21.1" 1.21.1
    • Push: git push --follow-tags
  • In foreman-selinux 1.21-stable:
    • change VERSION to 1.21.1
    • Run extras/changelog
    • Commit: git commit -am "Release 1.21.1"
    • Tag: git tag -s -m "Release 1.21.1" 1.21.1
    • Push: git push --follow-tags
  • In foreman-installer 1.21-stable:
    • change VERSION to 1.21.1
    • Commit: git commit -am "Release 1.21.1"
    • Tag: git tag -s -m "Release 1.21.1" 1.21.1
    • Push: git push --follow-tags
  • Run the Jenkins Tarballs Release to create tarballs
  • Verify tarballs are present on downloads.theforeman.org
  • Download, sign and upload detached signatures

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

  • In foreman-packaging rpm/1.21 branch, change foreman.spec, foreman-proxy.spec, foreman-selinux.spec, foreman-installer.spec:
    • Set version to 1.21.1
    • Set prerelease to ``
    • Reset release to 1
    • In each package dir, remove the old tarball, run spectool -g *.spec and git annex add *.tar.bz2
    • Commit with message “Release 1.21.1”
    • Submit a pull request
  • Update changelog files for debs:
    • scripts/changelog.rb -v 1.21.1-1 -m "1.21.1 released" debian/*/*/changelog
    • Submit a pull request
  • Trigger next step of release pipeline: release_packages
  • Use RPM_Packaging to sign RPMs
    • Download RPMs
    • Sign RPMs
    • Upload signatures
    • Upload RPMs
    • Sign “extra” RPMs
  • Trigger release_mash
  • Trigger release_test if mashing didn’t
  • Trigger release_push_deb and release_push_rpm if testing didn’t

1.21.1 has been declared dead on arrival due to packaging issues on debian. We’ll be releasing 1.21.2 with the fix soon. Follow 1.21.2 release process for progress.