Release Process » History » Version 130
Dominic Cleal, 06/29/2015 06:09 AM
plugin mash configs
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 | 51 | Lukas Zapletal | h2. First steps |
8 | 1 | Dominic Cleal | |
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 | 94 | Dominic Cleal | # Add _next+1_ anticipated version number to redmine under "Releases":http://projects.theforeman.org/rb/releases/foreman, sharing "With subprojects" |
15 | 2 | Dominic Cleal | # 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 | #* create public custom query with target version set, sorted by status ascending, then priority descending |
||
20 | 51 | Lukas Zapletal | # Go through targeted features in redmine and align features with our "backlog":https://trello.com/board/foreman-backlog/5162af6bb868365e0c007135 |
21 | |||
22 | h2. Before creating branch in git |
||
23 | |||
24 | 1 | Dominic Cleal | # Announce beginning of bug-squashing to foreman-dev ("example":http://groups.google.com/group/foreman-dev/browse_thread/thread/769d9060774da864) |
25 | 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) |
26 | 126 | Dominic Cleal | # Change @$latest@ and @$next@ parameters on @web@ class to point to the new version numbers (see @foreman-infra/puppet/modules/web/manifests/init.pp@) |
27 | 8 | Dominic Cleal | # Update manual if applicable for any additional installation steps |
28 | 58 | Lukas Zapletal | # Draft release notes in markdown ("example":https://gist.github.com/domcleal/5567450) using roadmap, with these sections (and do not use personal pronouns): |
29 | 6 | Dominic Cleal | ## Headline features: half a dozen important features with a few sentences description each |
30 | ## Upgrade notes: all important notices that users must be aware of before upgrading |
||
31 | 64 | Lukas Zapletal | ## 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 (helper vim search and replace command bellow) |
32 | 112 | Dominic Cleal | ## CLI release notes are taken from the hammer-cli and hammer-cli-foreman changelogs |
33 | ## Link to installer changelogs and note the rough versions being used |
||
34 | 60 | Lukas Zapletal | # Check @git log@ for any changes without associated bug number and add to release notes if applicable (https://gist.github.com/lzap/6520535) |
35 | 27 | Dominic Cleal | # Refresh kickstart, snippet and partition table templates from the community-templates repo to Foreman core |
36 | 129 | Marek Hulán | # Create a new branch in community-templates for upcoming Foreman release (e.g. 1.2-stable) |
37 | 117 | Dominic Cleal | # Clone tags and create build targets in "Koji":http://koji.katello.org/koji using koji/copy-tags-commands.sh in foreman-packaging/rpm/develop |
38 | 52 | Dominic Cleal | #* foreman-1.2-rhel6 etc. as clones of nightly tags |
39 | 55 | Lukas Zapletal | #* foreman-plugins-1.2-rhel6 etc. with inheritance from the new Foreman tags |
40 | 107 | Dominic Cleal | #* Untag all git/nightly builds: @for t in foreman-1.2-rhel6 foreman-1.2-nonscl-rhel6 foreman-1.2-rhel7 foreman-1.2-nonscl-rhel7 foreman-1.2-fedora19; do kkoji list-tagged $t | grep git | awk '{print $1}' | xargs kkoji untag-build $t; done@ |
41 | #* check for non-SCL packages that might be in the SCL tags and untag them, else these will cause mash precedence issues |
||
42 | 123 | Dominic Cleal | #** @for t in foreman-1.2-rhel6 foreman-1.2-rhel7; do kkoji list-tagged $t --quiet | egrep "^(rubygem-|foreman)" | awk '{print $1}' | xargs kkoji untag-build $t; done@ |
43 | 111 | Dominic Cleal | # Create mash scripts and configuration on Koji |
44 | #* copy /usr/local/bin/foreman-mash-split-1.*.py to foreman-mash-split-1.2.py, update the OSes and version numbers at the bottom |
||
45 | 130 | Dominic Cleal | #* copy /etc/mash/foreman-1.*-*.mash and foreman-plugins-1.*-*.mash, update the version numbers, add/remove files for OS changes |
46 | 124 | Dominic Cleal | # Add new plugin tags (i.e. 1.2) to Koji plugins mash script (foreman-mash-split-plugins.py), remove old ones (keep three) |
47 | # Add version (1.2) to "release_plugins_push":http://ci.theforeman.org/view/Release%20jobs/job/release_plugins_push job (note, it will be added to tests later), remove old ones (keep three) |
||
48 | 121 | Dominic Cleal | # Clone Debian nightly repos to 1.2 using "copy/freight instructions":http://projects.theforeman.org/projects/foreman/wiki/Debian_Packaging#Project-sources |
49 | 110 | Dominic Cleal | # Add release to "Found in release" list in redmine: http://projects.theforeman.org/custom_fields/4/edit |
50 | 64 | Lukas Zapletal | |
51 | Helper vim command to replace all @(#1234)@ bugs with links: |
||
52 | |||
53 | %s/(\(#\)\([0-9]\+\))/(\[\1\2]\(http:\/\/projects.theforeman.org\/issues\/\2))/g |
||
54 | 1 | Dominic Cleal | |
55 | h2. Pre-release candidates |
||
56 | |||
57 | 8 | Dominic Cleal | When ready to branch for release candidates. |
58 | |||
59 | 115 | Dominic Cleal | # Make releases of installer modules, usually new minor or major versions |
60 | 40 | Dominic Cleal | # Add new languages that are at a reasonable completion on Transifex to *develop* |
61 | 61 | Lukas Zapletal | # In foreman *develop* run @make -C locale tx-update@ |
62 | 70 | Dominic Cleal | # In foreman, smart-proxy, foreman-installer and foreman-selinux branch *develop* to *1.2-stable* (*from this point* cherry-picks into this branch only from this point using: @git cherry-pick -x SHA@) |
63 | 1 | Dominic Cleal | # In foreman-installer, branch *1.2-stable*, |
64 | 100 | Dominic Cleal | ## change Puppetfile from git references to specific version ranges (e.g. @>= 1.3.1 < 1.4.0@) |
65 | 122 | Dominic Cleal | # In foreman-packaging for RPMs: |
66 | ## branch *rpm/develop* to *rpm/1.2* |
||
67 | ## on *rpm/1.2*, in rel-eng/releasers.conf and rel-eng/tito.props, replace "nightly" with "1.2" |
||
68 | 127 | Dominic Cleal | ## on *rpm/develop* |
69 | ### change foreman/foreman-proxy/foreman-installer/foreman-selinux version to 1.3.0, add %changelog entry |
||
70 | ### change tag_suffix to @.fm1_3@ in rel-eng/tito.props |
||
71 | 122 | Dominic Cleal | # In foreman-packaging for debs: |
72 | ## on *deb/develop*, update debian/*/*/changelog with entries from 1.1, commit with message "Sync 1.1.x releases into changelogs" |
||
73 | ## branch *deb/develop* to *deb/1.2* |
||
74 | ## on *deb/develop*, run @scripts/changelog.rb -v 1.3.0-1 -m "Bump changelog to 1.3.0 to match VERSION" debian/*/*/changelog@ |
||
75 | 1 | Dominic Cleal | # In foreman *develop* commit with message "Bump version to 1.3-develop": |
76 | 97 | Dominic Cleal | ## change to VERSION to 1.3.0-develop |
77 | 96 | Dominic Cleal | ## run @extras/changelog@ |
78 | 1 | Dominic Cleal | # In smart-proxy *develop* commit with message "Bump version to 1.3-develop": |
79 | 99 | Greg Sutcliffe | ## change to VERSION to 1.3.0-develop |
80 | 100 | Dominic Cleal | ## run @extra/changelog@ |
81 | # In foreman-selinux *develop* commit with message "Bump version to 1.3-develop": |
||
82 | 106 | Dominic Cleal | ## change to VERSION to 1.3.0-develop |
83 | ## run @extras/changelog@ |
||
84 | 100 | Dominic Cleal | # In foreman-installer *develop* commit with message "Bump version to 1.3-develop": |
85 | ## change to VERSION to 1.3.0-develop |
||
86 | 52 | Dominic Cleal | # Update foreman-dev with "translations status":https://www.transifex.com/projects/p/foreman/ to encourage 100% translations before release, announce string freeze date |
87 | 38 | Dominic Cleal | # Change Transifex resource URL to point to the 1.2-stable branch |
88 | 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) |
89 | 113 | Dominic Cleal | # Set up test_proxy_1_2_stable job on Jenkins in the same way |
90 | 25 | Dominic Cleal | # Update release notes in new website manual version |
91 | 116 | Dominic Cleal | # Generate a release GPG key using [[GPG_Keys]] |
92 | #* publish to keyserver |
||
93 | #* security.md on the website |
||
94 | 1 | Dominic Cleal | #* create @releases/1.2/RPM-GPG-KEY-foreman@ on yum.theforeman.org |
95 | 120 | Dominic Cleal | #* update koji's /etc/mash/foreman-1.2-*.mash with GPG key ID |
96 | 2 | Dominic Cleal | |
97 | 1 | Dominic Cleal | h2. For each release candidate |
98 | 40 | Dominic Cleal | |
99 | 115 | Dominic Cleal | # Make patch releases of installer modules that have important changes |
100 | 91 | Dominic Cleal | # Compare tagged packages in nightly vs. release koji tag and re-tag any updated dependencies that are required |
101 | 69 | Dominic Cleal | # In foreman *1.2-stable* run @make -C locale tx-update@ |
102 | 1 | Dominic Cleal | # In foreman *1.2-stable* commit with message "Release 1.2.0-RC1": |
103 | 101 | Dominic Cleal | ## change VERSION to 1.2.0-RC1 |
104 | 1 | Dominic Cleal | ## run @extras/changelog@ |
105 | # In smart-proxy *1.2-stable* commit with message "Release 1.2.0-RC1": |
||
106 | 101 | Dominic Cleal | ## change VERSION to 1.2.0-RC1 |
107 | 1 | Dominic Cleal | ## run @extra/changelog@ |
108 | # In foreman-selinux *1.2-stable* commit with message "Release 1.2.0-RC1": |
||
109 | 101 | Dominic Cleal | ## change VERSION to 1.2.0-RC1 |
110 | 1 | Dominic Cleal | ## run extras/changelog |
111 | 37 | Dominic Cleal | # In foreman-installer *1.2-stable* commit with message "Release 1.2.0-RC1": |
112 | 101 | Dominic Cleal | ## change VERSION to 1.2.0-RC1 |
113 | 78 | Dominic Cleal | # Tag commits in foreman, smart-proxy, foreman-installer and foreman-selinux: @git tag -m "Release 1.2.0-RC1" 1.2.0-RC1@ |
114 | 101 | Dominic Cleal | # Push to the project repos: @git push project && git push project 1.2.0-RC1@ |
115 | 102 | Dominic Cleal | # Run the Jenkins "Release Pipeline":http://ci.theforeman.org/view/Release%20pipeline/ to create tarballs |
116 | 1 | Dominic Cleal | # Verify tarballs are present on downloads.theforeman.org, download, sign and upload detached signatures |
117 | 103 | Dominic Cleal | ## @gpg --homedir gnupg/1.2 -b -u packages@theforeman.org foreman-1.2.0-RC1.tar.bz2@ (requires 1.2 release GPG key generated above) |
118 | 104 | Dominic Cleal | # In foreman-packaging rpm/1.2 branch, change foreman.spec, foreman-proxy.spec, foreman-selinux.spec, foreman-installer.spec: |
119 | ## set version to "1.2.0", release to "0.1%{?dotalpha....", uncomment alphatag* (replace # with %), change to RC1 |
||
120 | ## change @foreman/foreman.repo@ URLs from @/nightly@ to @/releases/1.2@, change "nightly" in name to "1.2" and enable gpg checking |
||
121 | 101 | Dominic Cleal | ## change @foreman/foreman-plugins.repo@ URLs from @/plugins/nightly@ to @/plugins/1.2@, change "nightly" in name to "1.2" and DO NOT enable GPG checking |
122 | 104 | Dominic Cleal | ## update @foreman/foreman.gpg@ with the release public key |
123 | ## in each package dir, run @spectool -g *.spec@ and @git annex add *.tar.bz2@ |
||
124 | 105 | Dominic Cleal | ## commit with message "Release 1.2.0-RC1" |
125 | 108 | Dominic Cleal | ## perform RPM scratch build of each project (see [[RPM_Packaging]]) |
126 | 1 | Dominic Cleal | ## tag each project with @tito tag --keep-version --auto-changelog-message "Release 1.2.0-RC1"@ |
127 | 115 | Dominic Cleal | # [[Debian_Packaging#foreman]]: Update changelog files with appropriate data |
128 | 108 | Dominic Cleal | # Trigger next step of release pipeline: @release_packages@ |
129 | 109 | Dominic Cleal | #* use [[RPM_Packaging]] for the signing steps |
130 | 26 | Dominic Cleal | # Update theforeman.org sections: |
131 | 1 | Dominic Cleal | ## @_includes/social.html@ version number |
132 | ## @_includes/header.html@ manual links |
||
133 | # Follow "Publishing releases" below |
||
134 | |||
135 | h2. For final release |
||
136 | |||
137 | 115 | Dominic Cleal | # Make patch releases of installer modules that have important changes |
138 | #* Branch to MAJ.MIN-stable if recent changes to the module aren't suitable for patch (x.y.z) release |
||
139 | 52 | Dominic Cleal | # Compare tagged packages in nightly vs. release koji tag and re-tag any updated dependencies that are required |
140 | 1 | Dominic Cleal | # In foreman *1.2-stable* run @make -C locale tx-update@ |
141 | # In foreman *1.2-stable* commit with message "Release 1.2.0": |
||
142 | 115 | Dominic Cleal | ## change VERSION to 1.2.0 |
143 | 1 | Dominic Cleal | ## run @extras/changelog@ |
144 | # In smart-proxy *1.2-stable* commit with message "Release 1.2.0": |
||
145 | 115 | Dominic Cleal | ## change VERSION to 1.2.0 |
146 | 1 | Dominic Cleal | ## run @extra/changelog@ |
147 | # In foreman-selinux *1.2-stable* commit with message "Release 1.2.0": |
||
148 | 115 | Dominic Cleal | ## change VERSION to 1.2.0 |
149 | 41 | Dominic Cleal | ## run extras/changelog |
150 | 52 | Dominic Cleal | # In foreman-installer *1.2-stable* commit with message "Release 1.2.0": |
151 | 115 | Dominic Cleal | ## change VERSION to 1.2.0 |
152 | 1 | Dominic Cleal | # Tag commits in foreman, smart-proxy, foreman-installer and foreman-selinux: @git tag -m "Release 1.2.0" 1.2.0@ |
153 | 115 | Dominic Cleal | # Push to the project repos: @git push project && git push project 1.2.0@ |
154 | # Run the Jenkins "Release Pipeline":http://ci.theforeman.org/view/Release%20pipeline/ to create tarballs |
||
155 | # Verify tarballs are present on downloads.theforeman.org, download, sign and upload detached signatures |
||
156 | ## @gpg --homedir gnupg/1.2 -b -u packages@theforeman.org foreman-1.2.0.tar.bz2@ (requires 1.2 release GPG key generated above) |
||
157 | # In foreman-packaging rpm/1.2 branch, change foreman.spec, foreman-proxy.spec, foreman-selinux.spec, foreman-installer.spec: |
||
158 | ## set version to "1.2.0", release to "1%{?dotalpha....", comment alphatag* (replace % with #) |
||
159 | ## in each package dir, run @spectool -g *.spec@ and @git annex add *.tar.bz2@ |
||
160 | ## commit with message "Release 1.2.0" |
||
161 | ## perform RPM scratch build of each project (see [[RPM_Packaging]]) |
||
162 | ## tag each project with @tito tag --keep-version --auto-changelog-message "Release 1.2.0"@ |
||
163 | # [[Debian_Packaging#foreman]]: Update changelog files with appropriate data |
||
164 | # Trigger next step of release pipeline: @release_packages@ |
||
165 | #* use [[RPM_Packaging]] for the signing steps |
||
166 | 41 | Dominic Cleal | # Update theforeman.org sections: |
167 | ## @_includes/social.html@ version number |
||
168 | 83 | Dominic Cleal | ## @_includes/header.html@ manual links |
169 | 82 | Dominic Cleal | ## @_layouts/homepage.html@ quickstart link |
170 | 41 | Dominic Cleal | ## @_layouts/manual.html@ latestversion |
171 | ## @_config.yml@ quickstart link |
||
172 | # Merge develop branches into master (@git merge -Xtheirs --no-ff@) for: foreman, smart-proxy, foreman-installer, foreman-selinux |
||
173 | 115 | Dominic Cleal | #* Skip for now, this doesn't seem to work reliably |
174 | 1 | Dominic Cleal | # Follow "Publishing releases" below |
175 | 28 | Dominic Cleal | |
176 | 1 | Dominic Cleal | h2. Publishing releases (RCs and final) |
177 | |||
178 | 128 | Dominic Cleal | # Final only: |
179 | ## update @$stable@ class parameter on @web@ class to point to the new version number (see @foreman-infra/puppet/modules/web/manifests/init.pp@) |
||
180 | ## change web's /var/www/freight/apt/*/stable symlinks to the new version number, re-run freight cache |
||
181 | 125 | Dominic Cleal | # First RC: add version (1.2) to "release_plugins_test":http://ci.theforeman.org/job/release_plugins_test/ job |
182 | 50 | Dominic Cleal | # Send announcement e-mail to foreman-announce, CC foreman-users, set reply-to to foreman-users |
183 | 1 | Dominic Cleal | # Link to announcement e-mail on IRC, Google+ and update IRC /topic |
184 | 72 | Lukas Zapletal | # Update Wikipedia Foreman entry at: https://en.wikipedia.org/wiki/Foreman_(software) |
185 | 84 | Dominic Cleal | # Add release to "Found in release" list in redmine: http://projects.theforeman.org/custom_fields/4/edit |
186 | 40 | Dominic Cleal | |
187 | h2. After final release |
||
188 | |||
189 | 115 | Dominic Cleal | # Sync translations from Transifex into *develop* and update i18n |
190 | 49 | Dominic Cleal | # Remove target version from all issues assigned to the current release, unless they will be fixed in a future point release |