Release Process » History » Revision 33
Revision 32 (Dominic Cleal, 05/24/2013 07:30 AM) → Revision 33/211 (Dominic Cleal, 05/24/2013 07:40 AM)
h1. Release Process 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. Please amend these lists as you see free, and as you find what works and what doesn't work. h2. Pre-release # Select the release nanny # Ensure RPM and Debian nightly packages are in good shape and all RPM dependencies are up to date # Ensure "Transifex project":https://www.transifex.com/projects/p/foreman/ is up to date # Decide on the version number # If number has changed, update version number in redmine # Add _next+1_ anticipated version number to redmine under "Settings":http://projects.theforeman.org/projects/foreman/settings, sharing "With subprojects" # 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) #* reassign major features to next+1 version or remove version #* assign relevant bugs to this upcoming release #* multiple bugs can be managed using checkboxes and then right clicking on the boxes for a menu #* create public custom query with target version set, sorted by status ascending, then priority descending # Announce beginning of bug-squashing to foreman-dev ("example":http://groups.google.com/group/foreman-dev/browse_thread/thread/769d9060774da864) # 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) # Update manual if applicable for any additional installation steps # Draft release notes in markdown ("example":https://gist.github.com/domcleal/5567450) using roadmap, with these sections: ## Headline features: half a dozen important features with a few sentences description each ## 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 # Check @git log@ for any changes without associated bug number and add to release notes if applicable # Refresh kickstart, snippet and partition table templates from the community-templates repo to Foreman core # 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 h2. Pre-release candidates When ready to branch for release candidates. # In foreman, smart-proxy and foreman-installer, branch develop to 1.2-stable #* cherry-picks into this branch only from this point using: @git cherry-pick -x SHA@ # In foreman *develop* commit with message "Bump version to 1.2-develop": ## change to VERSION to 1.2-develop ## change foreman.spec to 1.2.9999, add %25changelog entry ## run @extras/changelog@ ## run @rake locale:find@ # In smart-proxy *develop* commit with message "Bump version to 1.2-develop": ## change to lib/proxy.rb VERSION to 1.2-develop ## change foreman-proxy.spec version to 1.2.9999, add %25changelog entry ## run @extra/changelog@ # Update foreman-dev with "translations status":https://www.transifex.com/projects/p/foreman/ to encourage 100%25 translations before release, announce string freeze date # Update $repo in both foreman-installer/foreman and foreman_proxy modules to "rc" ("example":https://github.com/theforeman/puppet-foreman/commit/4098163a8) # 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) # Update release notes in new website manual version h2. For each release candidate # Update version and dependency versions in all foreman-installer submodules # Update submodules on foreman-installer's develop branch # In foreman *1.2-stable* commit with message "Release 1.2.0-RC1": ## change to VERSION to 1.2.0-RC1 ## change foreman.spec version to "1.2.0", release to "0.1.RC1", add %25changelog entry ## run @extras/changelog@ ## run @rake locale:find@ if before string freeze ## change @extras/packaging/rpm/sources/foreman.repo@ URL to @/rc@ from @/releases/latest@ # In smart-proxy *1.2-stable* commit with message "Release 1.2.0-RC1": ## change to lib/proxy.rb VERSION to 1.2.0-RC1 ## change foreman-proxy.spec version to "1.2.0", release to "0.1.RC1", add %25changelog entry ## run @extra/changelog@ # Perform RPM scratch build of foreman and foreman-proxy # Tag commits in foreman, smart-proxy and foreman-installer: @git tag -m "Release 1.2.0-RC1" 1.2.0-RC1@ # @git push && git push --tags@ # [[RPM_Packaging]]: clone new repo and follow tag and release procedure for foreman and foreman-proxy # [[Debian_Packaging#foreman]]: Update build.sh and changelog files with appropriate data # Build foreman-installer modules from 1.2-stable (see [[Installer_Packaging]] workflow) # Build foreman-installer RPM and Debian packages from 1.2-stable (see [[RPM_Packaging]] and [[Debian_Packaging#foreman-installer]]) # Update theforeman.org sections: ## both @_includes/manuals/1.2/2_quickstart_guide.md@ and @_includes/manuals/1.2/3.2.1_installation.md@ ##* supported platforms ##* foreman-release path (rc or releases), package version number ##* Debian platforms and repo name (rc or stable) ## @_includes/releasesplash.html@ version number # Generate and sign tarball of foreman and smart-proxy: ## @git archive --prefix=foreman-1.2.0-RC1/ 1.2.0-RC1 | bzip2 -9 > foreman-1.2.0-RC1.tar.bz2@ ## @gpg -b -u packages@theforeman.org foreman-1.2.0-RC1.tar.bz2@ (requires packages key) ../pkg/foreman-1.2.0-RC1.tar.bz2@ # Follow "Publishing releases" below h2. For final release # Update version and dependency versions in all foreman-installer submodules # Revert $repo in both foreman-installer/foreman and foreman_proxy modules to "stable" ("example":https://github.com/theforeman/puppet-foreman/commit/73bd43fa) # Update submodules on foreman-installer's develop branch # Merge foreman-installer's develop branch into master # Build foreman-installer modules from master (see [[Installer_Packaging]] workflow) # Build foreman-installer RPM and Debian packages from master (see [[RPM_Packaging]] and [[Debian_Packaging#foreman-installer]]) # Follow "Publishing releases" below h2. Publishing releases (RCs and final) # Push RPMs to repo on the web host, under @/var/www/vhosts/yum/htdocs/rc@ or @/releases/1.2@ etc (see [[RPM_Packaging]]) # Push foreman-installer to Freight (see [[Debian_Packaging#foreman-installer]]) # Upload tarballs and detached signatures to http://projects.theforeman.org/projects/foreman/files # Upload all installer module .tar.gz files to Puppet Forge # Update @$latest@ class parameter on @web@ class to point to the new version number (see @foreman-infra/puppet/modules/web/manifests/init.pp@) # Send announcement e-mail to foreman-users, foreman-dev