Make this post a wiki
Roles
- Release Owner: @upadhyeammit
- Release Engineer: @Odilhao
- Installer Maintainer: @
Prep Week: 2021-10-18 to 2021-10-22
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
pull request - 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 https://www.transifex.com/foreman/foreman/announcements/
- Update foreman-dev with translations status to encourage 100% translations before release
-
Update locales in foreman develop:
Stabilization Week: 2021-10-25 to 2021-10-29
Stabilization Week: 2021-11-01 to 2021-11-05
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. : pull request - Copy website manual content from nightly to 3.1 and update version numbers mentioned in it. : pull request
- Update installer options section of nightly manual using the get-params script : pull request
- 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.1/RPM-GPG-KEY-foreman on yum.theforeman.org
- [X ] 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.1.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.1.yaml sed -i '/strict_keys/ s/True/False/' mash_scripts/foreman/3.1.0/foreman-plugins-3.1-*.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.1.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.1.groovy
inpipelines/vars/foreman/
describing the operating systems the release supports -
Add
3.1
to the version list intheforeman.org/yaml/includes/foreman_versions.yaml.inc
-
Add
3.1
to the version list incentos.org/jobs/foreman-pipelines.yml
-
Create
test_3_1_stable.yaml
andtest_proxy_3_1_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.1 to Forklift versions config. Once the PR is merged, upgrade pipelines will fail, so do not merge it before packaging has been branched.
Branching: 2021-11-02
Branching: 2021-11-09
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.1.yaml
-
Create a
rpm/3.1
branch in foreman-packaging based onrpm/develop
-
Clone tags and create build targets in Koji:
-
Branch Debian packaging
- Clone Debian nightly repos to 3.1 using copy/freight instructions
-
Create a
deb/3.1
branch in foreman-packaging based ondeb/develop
Release Owner
-
Create 3.1-stable branches
- foreman
-
foreman-installer
-
bundle exec rake pin_modules && sed -i '/Puppetfile.lock/d' .gitignore && bundle exec librarian-puppet install && git add Puppetfile*
Pull Request
-
- 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.2-develop
echo 3.2.0-develop > VERSION
-
foreman
Also change package.json version field to 3.2.0 - foreman-installer
- foreman-selinux
- smart-proxy
- hammer-cli
- hammer-cli-foreman
-
foreman
Preparing build systems: 2021-11-09
Preparing build systems: 2021-11-09
Release engineer
-
Update foreman-packaging rpm/develop to ensure nightlies build:
-
rpm/develop:
-
Update the build tag:
sed -i 's/fm3_1/fm3_2/g' rel-eng/{releasers.conf,tito.props} package_manifest.yaml
-
Set to version
3.2.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.2-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman}
-
Update the build tag:
-
deb/develop:
scripts/changelog.rb -v 3.2.0-1 -m "Bump changelog to 3.2.0 to match VERSION" debian/*/*/changelog
-
rpm/develop:
-
Prepare build systems for 3.1 release:
-
foreman-packaging’s rpm/3.1
-
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.1
-
Trigger the
foreman-packaging-rpm-3.1
job once, so that GitHub hooks are properly set up.
Other systems: 2021-11-02
Other systems: 2021-11-09
Release Owner
- Create release schedule page for next version (3.2) linked from Development_Resources and post planned schedule on Discourse.
- Create Redmine versions
- Ensure current Foreman deprecations for the next release are removed in develop
This was based on the wiki procedure and sometimes has a bit more info.