Make this post a wiki
Roles
- Release Owner: @upadhyeammit
- Release Engineer: @zhunting
- Installer Maintainer: @ekohl
Prep Week: 2022-01-24 to 2022-01-28
Installer Maintainer
-
Make releases of installer modules
- Tier 0 (no dependencies)
- Tier 1 (Dependencies on Tier 0)
- Tier 2 (Dependencies on Tier 1)
Release Owner
- Ensure headline features planned for the release have been merged or push them off to the next release.
- Translations:
-
Update locales in foreman develop:
make -C locale tx-update
- Ask plugin authors to start extracting i18n strings and pushing the changes into develop/master git branches so Transiflex can pick it up
- Announce string freeze date on discourse and send announcement via Foreman localization
- Update foreman-dev with translations status to encourage 100% translations before release
-
Update locales in foreman develop:
Stabilization Week: 2022-01-31 to 2022-02-04
Release Owner
-
Announce start of stabilization week to discourse development category.
-
Request new Hammer CLI release from maintainers if needed.
-
Prepare the manual for the new version:
-
Change
$next
parameter on web class to point to the new version number. - Copy website manual content from nightly to 3.2 and update version numbers mentioned in it.
- Update installer options section of nightly manual using the get-params script
- Clean up deprecation and upgrade warnings from nightly manual.
-
Change
-
Branch foreman-documentation git repository:
- Branch the github repository.
-
Add new languages that are at a reasonable completion on Transifex to develop
Release Engineer
- Create new GPG key for release. See GPG_Keys if needed.
-
Publish the key by exporting the GPG key
- Update the website’s security.md and create a file in static/keys
- Create releases/3.2/RPM-GPG-KEY-foreman on yum.theforeman.org
-
Commit the settings file to the
theforeman-rel-eng
repository
-
Create new settings files for client, ensure it has the rights
OSES
list and commit it too. -
Create
configs/foreman/3.2.yaml
based on the nightly and previous release. Ensure that anybased_on
entries are filled out and pointing to nightly version of tag.-
Generate mash configs
bundle exec ./tools.rb mash-scripts configs/foreman/3.2.yaml sed -i '/strict_keys/ s/True/False/' mash_scripts/foreman/3.2.0/foreman-plugins-3.2-*.mash
- Open PR with new config and mash scripts for review
-
Create mash configuration on Koji, from tool_belt checkout:
scp mash_scripts/foreman/3.2.0/*.mash root@koji.katello.org:/etc/mash/
-
Generate mash configs
- Update mash script if needed - collection-mash-split.py
-
Add the new release to the JJB job definitions in jenkins-jobs
-
Create a
3.2.groovy
inpipelines/vars/foreman/
describing the operating systems the release supports -
Add
3.2
to the version list intheforeman.org/yaml/includes/foreman_versions.yaml.inc
-
Add
3.2
to the version list incentos.org/jobs/foreman-pipelines.yml
-
Create
test_3_2_stable.yaml
andtest_proxy_3_2_stable.yaml
inyaml/jobs/
-
Create a
- Open PR to remove any jobs that are related to end of life versions
- Open PR to add 3.2 to Forklift versions config. Once the PR is merged, upgrade pipelines will fail, so do not merge it before packaging has been branched.
Branching: 2022-02-10
Release Engineer
-
Branch RPM packaging using tool_belt
-
Clone tags and create build targets in Koji:
bundle exec ./tools.rb koji --commit configs/foreman/3.2.yaml
-
Create a
rpm/3.2
branch in foreman-packaging based onrpm/develop
-
Clone tags and create build targets in Koji:
-
Branch Debian packaging
- Clone Debian nightly repos to 3.2 using copy/freight instructions
-
Create a
deb/3.2
branch in foreman-packaging based ondeb/develop
Release Owner
-
Create 3.2-stable branches
- foreman
-
foreman-installer
-
bundle exec rake pin_modules && sed -i '/Puppetfile.lock/d' .gitignore && bundle exec librarian-puppet install && git add Puppetfile*
-
- foreman-selinux
- smart-proxy
- hammer-cli
- hammer-cli-foreman
The next step should only be done after all branching, including packaging, has completed.
-
Bump versions to 3.3-develop
echo 3.3.0-develop > VERSION
-
foreman
Also change package.json version field to 3.3.0 - foreman-installer
- foreman-selinux
- smart-proxy
- hammer-cli
- hammer-cli-foreman
-
foreman
Preparing build systems: 2022-02-10
Release engineer
-
Update foreman-packaging rpm/develop to ensure nightlies build:
-
rpm/develop:
-
Update the build tag:
sed -i 's/fm3_2/fm3_3/g' rel-eng/{releasers.conf,tito.props} package_manifest.yaml
-
Set to version
3.3.0
, reset release to1
inpackages/foreman/foreman{,-{installer,proxy,release,selinux}}/*.spec
andpackages/foreman/rubygem-hammer_cli{,_foreman}/*.spec
. Then create a changelog usingobal changelog --message '- Bump version to 3.3-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman}
-
Update the build tag:
-
deb/develop:
scripts/changelog.rb -v 3.3.0-1 -m "Bump changelog to 3.3.0 to match VERSION" debian/*/*/changelog
-
rpm/develop:
-
Prepare build systems for 3.2 release:
-
foreman-packaging’s rpm/3.2
-
Update
packages/foreman/foreman-release/foreman.gpg
,mock/*.cfg
,package_manifest.yaml
,rel-eng/{releasers.conf,tito.props}
andrepoclosure/*.conf
-
Update
-
foreman-packaging’s rpm/3.2
-
Trigger the
foreman-packaging-rpm-3.2
job once, so that GitHub hooks are properly set up. -
Trigger the
foreman-packaging-deb-3.2
job once, so that GitHub hooks are properly set up.
Other systems: 2022-02-10
Release Owner
- Create release schedule page for next version (3.3) linked from Development_Resources and post planned schedule on Discourse.
- Create Redmine versions
-
Ensure current Foreman deprecations for the next release are removed in developThere are no deprecations of 3.2 version, so nothing to remove.
This was based on the wiki procedure and sometimes has a bit more info.