Project

General

Profile

Release Process » History » Version 28

Dominic Cleal, 05/24/2013 07:24 AM
publishing

1 1 Dominic Cleal
h1. Release Process
2
3
For each major release (i.e. not patch releases), the project selects a "release nanny" who's responsible for taking the develop branch through to release.
4
5
Please amend these lists as you see free, and as you find what works and what doesn't work.
6
7
h2. Pre-release
8
9
# Select the release nanny
10 2 Dominic Cleal
# Ensure RPM and Debian nightly packages are in good shape and all RPM dependencies are up to date
11 7 Dominic Cleal
# Ensure "Transifex project":https://www.transifex.com/projects/p/foreman/ is up to date
12 1 Dominic Cleal
# Decide on the version number
13 2 Dominic Cleal
# If number has changed, update version number in redmine
14
# Add _next+1_ anticipated version number to redmine under "Settings":http://projects.theforeman.org/projects/foreman/settings, sharing "With subprojects"
15
# Check "roadmap":http://projects.theforeman.org/projects/foreman/roadmap and issue search ("example":http://projects.theforeman.org/projects/foreman/issues?fixed_version_id=24&set_filter=1&status_id=o)
16
#* reassign major features to next+1 version or remove version
17 1 Dominic Cleal
#* assign relevant bugs to this upcoming release
18
#* multiple bugs can be managed using checkboxes and then right clicking on the boxes for a menu
19 17 Dominic Cleal
#* create public custom query with target version set, sorted by status ascending, then priority descending
20 1 Dominic Cleal
# Announce beginning of bug-squashing to foreman-dev ("example":http://groups.google.com/group/foreman-dev/browse_thread/thread/769d9060774da864)
21 8 Dominic Cleal
# Copy website manual content ("theforeman.org repo":http://github.com/theforeman/theforeman.org) from previous version to this version ("example":https://github.com/theforeman/theforeman.org/pull/43)
22
# Update manual if applicable for any additional installation steps
23 6 Dominic Cleal
# Draft release notes in markdown ("example":https://gist.github.com/domcleal/5567450) using roadmap, with these sections:
24
## Headline features: half a dozen important features with a few sentences description each
25
## Upgrade notes: all important notices that users must be aware of before upgrading
26
## 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
27
# Check @git log@ for any changes without associated bug number and add to release notes if applicable
28 27 Dominic Cleal
# Refresh kickstart, snippet and partition table templates from the community-templates repo to Foreman core
29 15 Dominic Cleal
# Request creation of tags and build targets in "Koji":http://koji.katello.org/koji from rel-eng (foreman-1.2-rhel6 etc.) as clones of nightly tags
30 1 Dominic Cleal
31
h2. Pre-release candidates
32
33 8 Dominic Cleal
When ready to branch for release candidates.
34
35 15 Dominic Cleal
# In foreman, smart-proxy and foreman-installer, branch develop to 1.2-stable
36 1 Dominic Cleal
#* cherry-picks into this branch only from this point using: @git cherry-pick -x SHA@
37 15 Dominic Cleal
# In foreman *develop* commit with message "Bump version to 1.2-develop":
38
## change to VERSION to 1.2-develop
39 18 Dominic Cleal
## change foreman.spec to 1.2.9999, add %25changelog entry
40 15 Dominic Cleal
## run @extras/changelog@
41
## run @rake locale:find@
42
# In smart-proxy *develop* commit with message "Bump version to 1.2-develop":
43
## change to lib/proxy.rb VERSION to 1.2-develop
44 18 Dominic Cleal
## change foreman-proxy.spec version to 1.2.9999, add %25changelog entry
45 15 Dominic Cleal
## run @extra/changelog@
46 7 Dominic Cleal
# Update foreman-dev with "translations status":https://www.transifex.com/projects/p/foreman/ to encourage 100%25 translations before release, announce string freeze date
47 10 Dominic Cleal
# Update $repo in both foreman-installer/foreman and foreman_proxy modules to "rc" ("example":https://github.com/theforeman/puppet-foreman/commit/4098163a8)
48 16 Dominic Cleal
# Set up test_1_2_stable job on Jenkins, copy from existing stable or test_develop (don't use dots in the name, it breaks)
49 25 Dominic Cleal
# Update release notes in new website manual version
50 2 Dominic Cleal
51 1 Dominic Cleal
h2. For each release candidate
52
53
# Update version and dependency versions in all foreman-installer submodules
54
# Update submodules on foreman-installer's develop branch
55 19 Dominic Cleal
# In foreman *1.2-stable* commit with message "Release 1.2.0-RC1":
56
## change to VERSION to 1.2.0-RC1
57 20 Dominic Cleal
## change foreman.spec version to "1.2.0", release to "0.1.RC1", add %25changelog entry
58 19 Dominic Cleal
## run @extras/changelog@
59
## run @rake locale:find@ if before string freeze
60 25 Dominic Cleal
## change @extras/packaging/rpm/sources/foreman.repo@ URL to @/rc@ from @/releases/latest@
61 19 Dominic Cleal
# In smart-proxy *1.2-stable* commit with message "Release 1.2.0-RC1":
62
## change to lib/proxy.rb VERSION to 1.2.0-RC1
63 20 Dominic Cleal
## change foreman-proxy.spec version to "1.2.0", release to "0.1.RC1", add %25changelog entry
64 19 Dominic Cleal
## run @extra/changelog@
65 22 Dominic Cleal
# Perform RPM scratch build of foreman and foreman-proxy
66 21 Dominic Cleal
# Tag commits in foreman, smart-proxy and foreman-installer: @git tag -m "Release 1.2.0-RC1" 1.2.0-RC1@
67
# @git push && git push --tags@
68 22 Dominic Cleal
# [[RPM_Packaging]]: clone new repo and follow tag and release procedure for foreman and foreman-proxy
69 23 Greg Sutcliffe
# [[Debian_Packaging#foreman]]: Update build.sh and changelog files with appropriate data
70 24 Dominic Cleal
# Build foreman-installer modules from 1.2-stable (see [[Installer_Packaging]] workflow)
71
# Build foreman-installer RPM and Debian packages from 1.2-stable (see [[RPM_Packaging]] and [[Debian_Packaging]])
72 26 Dominic Cleal
# Update theforeman.org sections:
73
## both @_includes/manuals/1.2/2_quickstart_guide.md@ and @_includes/manuals/1.2/3.2.1_installation.md@
74
##* supported platforms
75
##* foreman-release path (rc or releases), package version number
76
##* Debian platforms and repo name (rc or stable)
77
## @_includes/releasesplash.html@ version number
78 28 Dominic Cleal
# Generate tarball of foreman and smart-proxy: @git archive --prefix=foreman-1.2.0-RC1/ 1.2.0-RC1 | bzip2 -9 > ../pkg/foreman-1.2.0-RC1.tar.bz2@
79
# Follow "Publishing releases" below
80 10 Dominic Cleal
81
h2. For final release
82 11 Dominic Cleal
83 10 Dominic Cleal
# Update version and dependency versions in all foreman-installer submodules
84
# Revert $repo in both foreman-installer/foreman and foreman_proxy modules to "stable" ("example":https://github.com/theforeman/puppet-foreman/commit/73bd43fa)
85
# Update submodules on foreman-installer's develop branch
86
# Merge foreman-installer's develop branch into master
87
# Build foreman-installer modules from master (see [[Installer_Packaging]] workflow)
88
# Build foreman-installer RPM and Debian packages from master (see [[RPM_Packaging]] and [[Debian_Packaging]])
89 28 Dominic Cleal
# Follow "Publishing releases" below
90
91
h2. Publishing releases (RCs and final)
92
# rsync the RPM compose from Koji to the web host, under @/var/www/vhosts/yum/htdocs/rc@ or @/releases/1.2@ etc
93
# Upload tarballs and detached signatures to http://projects.theforeman.org/projects/foreman/files
94
# Upload all installer module .tar.gz files to Puppet Forge
95
# Update @$latest@ class parameter on @web@ class to point to the new version number (see @foreman-infra/puppet/modules/web/manifests/init.pp@)