Make this post a wiki
Two weeks before branching
-
Make releases of installer modules
- Tier 0 (no dependencies)
- Tier 1 (Dependencies on Tier 0)
- Tier 2 (Dependencies on Tier 1)
- 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 https://www.transifex.com/foreman/foreman/announcements/
- Update foreman-dev with translations status to encourage 100% translations before release
-
Update locales in foreman develop:
During the week before branching
- 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. https://github.com/theforeman/foreman-infra/pull/1247 - Copy website manual content from nightly to 2.0 and update version numbers mentioned in it.
-
Clean up deprecation and upgrade warnings from nightly manual.
https://github.com/theforeman/theforeman.org/pull/1530
-
Change
-
Refresh unattended templates
-
Sync the community-templates to Foreman core, by running
script/sync_templates.sh
- Create a -stable branch in community-templates
-
Sync the community-templates to Foreman core, by running
- Add new languages that are at a reasonable completion on Transifex to develop
- Generate, backup, sign and upload a GPG key. 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 PR
-
Create releases/2.0/RPM-GPG-KEY-foreman on yum.theforeman.org under
/var/www/vhosts/yum/htdocs/releases/2.0
-
Commit the settings file to the
theforeman-rel-eng
repository PR
-
Create new settings files for client, ensure it has the rights
OSES
list and commit it too. PR
Package build systems
-
Create tool_belt config based on the previous release PR
-
Clone tags and create build targets in Koji:
bundle exec ./tools.rb koji --commit configs/foreman/2.0.yaml
-
Make sure all nightly builds of packages are removed from the releases tags
-
Create mash configuration on Koji:
bundle exec ./tools.rb mash-scripts configs/foreman/2.0.yaml sed -i '/strict_keys/ s/True/False/' mash_scripts/foreman/2.0.0/foreman-plugins-2.0-*.mash scp mash_scripts/foreman/2.0.0/*.mash root@koji.katello.org:/etc/mash/
-
Update mash scripts and deploy them to Koji:
-
Verify main mash scripts (
foreman-mash-split.py
,foreman-rails-mash-split.py
andforeman-plugin-mash-split.py
) don’t need any version-specific updates -
Update dists in client mash script (
foreman-client-mash-split.py
)
-
Verify main mash scripts (
-
Add version 2.0 to jobs in axes and/or combination filters, remove old ones (keep three)
-
Clone Debian nightly repos to 2.0 using copy/freight instructions
Branch main code repos
- Create 2.0-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
- Branch foreman-packaging
-
Create rpm/2.0 and update
packages/foreman/foreman-release/foreman.gpg
,mock/*.cfg
,package_manifest.yaml
,rel-eng/{releasers.conf,tito.props}
andrepoclosure/*.conf
PR - Create deb/2.0
-
Update
.github/PULL_REQUEST_TEMPLATE.md
(by adding[ ] 2.0
to it) inmaster
-
Create rpm/2.0 and update
- Bump versions to 2.1-develop
echo 2.1.0-develop > VERSION
-
foreman
Also change package.json version field to 2.1.0 - foreman-installer
- foreman-selinux
- smart-proxy
-
foreman
- Update foreman-packaging to 2.1:
-
rpm/develop:
-
Update the build tag:
sed -i 's/fm2_0/fm2_1/g' rel-eng/{releasers.conf,tito.props}
PR -
Set to version
2.1.0
, reset release to1
inpackages/foreman/foreman{,-{installer,proxy,release,selinux}}/*.spec
and create a changelog usingobal changelog --message '- Bump version to 2.1-develop' foreman{,-{installer,proxy,release,selinux}}
PR
-
Update the build tag:
-
deb/develop:
scripts/changelog.rb -v 2.1.0-1 -m "Bump changelog to 2.1.0 to match VERSION" debian/*/*/changelog
-
rpm/develop:
Other systems
- Create release schedule page for next version (2.1) linked from Development_Resources and post planned schedule on Discourse.
- Create Redmine versions
-
Add the new release to the JJB job definitions in foreman-infra
-
Create a
2.0.groovy
inpipelines/vars/foreman/
describing the operating systems the release supports -
Add
2.0
to the version list inyaml/jobs/pipeline/foreman-release.yaml
-
Create
test_2_0_stable.yaml
andtest_proxy_2_0_stable.yaml
inyaml/jobs/
- Remove the oldest version to keep last 3 from the files/directories in the previous steps
-
Create a
- Ensure current Foreman deprecations for the next release are removed in develop
- Add 2.0 to Forklift versions config
This was based on the wiki procedure and sometimes has a bit more info.