Jump to: navigation, search

Difference between revisions of "StableBranchRelease"

(Planned stable/havana releases)
(update for stable/icehouse)
Line 18: Line 18:
 
=== Tarballs ===
 
=== Tarballs ===
  
Make sure the tarballs job in Jenkins is building tarballs correctly for each project e.g. check [http://tarballs.openstack.org/nova/nova-stable-havana.tar.gz here for Nova Havana] that a tarball is being built from the stable branch each time a commit is pushed there.
+
Make sure the tarballs job in Jenkins is building tarballs correctly for each project e.g. check [http://tarballs.openstack.org/nova/nova-stable-icehouse.tar.gz here for Nova Icehouse] that a tarball is being built from the stable branch each time a commit is pushed there.
  
 
=== Warn People ===
 
=== Warn People ===
Line 32: Line 32:
 
=== Bugs ===
 
=== Bugs ===
  
Note: [https://bugs.launchpad.net/launchpad/+bug/1081197 only project drivers can target bugs to a series] so the release manager needs to find bugs tagged with '''in-stable-havana''' and target them.
+
Note: [https://bugs.launchpad.net/launchpad/+bug/1081197 only project drivers can target bugs to a series] so the release manager needs to find bugs tagged with '''in-stable-icehouse''' and target them.
  
 
# Gather a list of bugs fixed since the previous release e.g.  
 
# Gather a list of bugs fixed since the previous release e.g.  
 
<pre><nowiki>
 
<pre><nowiki>
$> git log --no-merges --topo-order 2013.2.2.. | grep -i '\(bug\|lp\)[: #]*' | sed 's/.*\(1[0-9][0-9][0-9][0-9][0-9][0-9]\).*/\1/' > nova-bugs.txt
+
$> git log --no-merges --topo-order 2014.1.1.. | grep -i '\(bug\|lp\)[: #]*' | sed 's/.*\(1[0-9][0-9][0-9][0-9][0-9][0-9]\).*/\1/' > nova-bugs.txt
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 46: Line 46:
 
# Nominate those bugs for the series  
 
# Nominate those bugs for the series  
 
<pre><nowiki>
 
<pre><nowiki>
$> python nominate.py nova grizzly $(cat nova-bugs.txt)
+
$> python nominate.py nova icehouse $(cat nova-bugs.txt)
 
</nowiki></pre>
 
</nowiki></pre>
  
 
# Target those bugs at the milestone  
 
# Target those bugs at the milestone  
 
<pre><nowiki>
 
<pre><nowiki>
$> python target.py nova grizzly 2013.2.3 $(cat nova-bugs.txt)
+
$> python target.py nova icehouse 2014.1.2 $(cat nova-bugs.txt)
 
</nowiki></pre>
 
</nowiki></pre>
  
# Review the list of bugs targeted to the milestone and fixup Importance and Assignee fields e.g. https://bugs.launchpad.net/nova/+milestone/2013.2.3
+
# Review the list of bugs targeted to the milestone and fixup Importance and Assignee fields e.g. https://bugs.launchpad.net/nova/+milestone/2014.1.1
# Review bugs tagged with '''in-stable-havana''' and target them appropriately if they haven't already been targeted. Don't forget to remove the tag. e.g. [https://bugs.launchpad.net/nova/+bugs?field.tag=in-stable-havana&field.status%3Alist=NEW&field.status%3Alist=OPINION&field.status%3Alist=INVALID&field.status%3Alist=WONTFIX&field.status%3Alist=EXPIRED&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE a query for nova]
+
# Review bugs tagged with '''in-stable-icehouse''' and target them appropriately if they haven't already been targeted. Don't forget to remove the tag. e.g. [https://bugs.launchpad.net/nova/+bugs?field.tag=in-stable-icehouse&field.status%3Alist=NEW&field.status%3Alist=OPINION&field.status%3Alist=INVALID&field.status%3Alist=WONTFIX&field.status%3Alist=EXPIRED&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE a query for nova]
# Review bugs tagged with '''havana-backport-potential''', untag fixes already backported and consider backporting important ones. e.g. [https://bugs.launchpad.net/nova/+bugs?field.tag=havana-backport-potential&field.status%3Alist=NEW&field.status%3Alist=OPINION&field.status%3Alist=INVALID&field.status%3Alist=WONTFIX&field.status%3Alist=EXPIRED&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE a query for nova].
+
# Review bugs tagged with '''icehouse-backport-potential''', untag fixes already backported and consider backporting important ones. e.g. [https://bugs.launchpad.net/nova/+bugs?field.tag=icehouse-backport-potential&field.status%3Alist=NEW&field.status%3Alist=OPINION&field.status%3Alist=INVALID&field.status%3Alist=WONTFIX&field.status%3Alist=EXPIRED&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE a query for nova].
# Check to see if [https://bugs.launchpad.net/nova/havana/+nominations any bugs were nominated for the series]
+
# Check to see if [https://bugs.launchpad.net/nova/icehouse/+nominations any bugs were nominated for the series]
# Look at open reviews and make sure the corresponding bugs are targeted. e.g. [https://review.openstack.org/#/q/branch:stable/havana+status:open+project:openstack/nova,n,z query for nova].
+
# Look at open reviews and make sure the corresponding bugs are targeted. e.g. [https://review.openstack.org/#/q/branch:stable/icehouse+status:open+project:openstack/nova,n,z query for nova].
  
 
=== Call For Testing ===
 
=== Call For Testing ===
Line 67: Line 67:
 
# Tag the release:
 
# Tag the release:
 
<pre><nowiki>
 
<pre><nowiki>
$> git tag -s 2013.2.3
+
$> git tag -s 2014.1.2
$> git push gerrit tag 2013.2.3</nowiki></pre>
+
$> git push gerrit tag 2014.1.2</nowiki></pre>
  
 
=== Close bugs ===
 
=== Close bugs ===
Line 74: Line 74:
 
# Mark all [[FixCommitted]] bugs as [[FixReleased]]. With a small change:
 
# Mark all [[FixCommitted]] bugs as [[FixReleased]]. With a small change:
 
<pre><nowiki>
 
<pre><nowiki>
+series = proj.getSeries(name='havana')
+
+series = proj.getSeries(name='icehouse')
 
+bugtasks = series.searchTasks(status='Fix Committed', omit_targeted=False)</nowiki></pre>
 
+bugtasks = series.searchTasks(status='Fix Committed', omit_targeted=False)</nowiki></pre>
 
we can use <code><nowiki>process-fixcommitted-bugs.py</nowiki></code>:
 
we can use <code><nowiki>process-fixcommitted-bugs.py</nowiki></code>:
 
<pre><nowiki>
 
<pre><nowiki>
$> python ./process-fixcommitted-bugs.py --onlymilestone 2013.2.3 --fixrelease nova
+
$> python ./process-fixcommitted-bugs.py --onlymilestone 2014.1.2 --fixrelease nova
 
</nowiki></pre>
 
</nowiki></pre>
 
NB: script might fail updating bugs with lots of tasks e.g. bug 1251757 - skip them using optional "exceptions" parameters e.g.
 
NB: script might fail updating bugs with lots of tasks e.g. bug 1251757 - skip them using optional "exceptions" parameters e.g.
Line 91: Line 91:
 
# Upload the release:
 
# Upload the release:
 
<pre><nowiki>
 
<pre><nowiki>
$> python ./upload_release.py nova 2013.2.3
+
$> python ./upload_release.py nova 2014.1.2
 
</nowiki></pre>
 
</nowiki></pre>
  
 
=== Docs ===
 
=== Docs ===
  
# Update [[SecurityAdvisories/Havana]]
+
# Update [[SecurityAdvisories/Icehouse]]
# Write release notes like [[ReleaseNotes/2013.2.2]]
+
# Write release notes like [[ReleaseNotes/2014.1.1]]
 
# Send release announcement like [[StableBranchRelease/BoilerPlateAnnounce]].
 
# Send release announcement like [[StableBranchRelease/BoilerPlateAnnounce]].
 
# Update [[Releases]]
 
# Update [[Releases]]

Revision as of 11:33, 6 June 2014

Stable Branch Releases

The openstack-stable-maint team rigorously applies the documented StableBranch principles and works hard to include appropriate bugfixes from master on the stable branch while limiting the risk of regressions. The intention is for releases published from the stable branch to be a safe source of fixes for high-impact user-visible issues.

The ReleaseTeam is responsible for all OpenStack release deliveries and apevec and adam_g coordinate releases from the stable branch. Stable branch releases are expected roughly every 8 weeks, depending on how many fixes are queued up.

You can see a history of these releases on the Releases page.

How To Release

Below is the checklist of steps required to carry out this release, heavily based on ReleaseTeam/HowToRelease.

Versioning

Make sure the current versioning on the stable branch of each project is correct - e.g. the version in setup.cfg is the same as the version you intend to release.

Tarballs

Make sure the tarballs job in Jenkins is building tarballs correctly for each project e.g. check here for Nova Icehouse that a tarball is being built from the stable branch each time a commit is pushed there.

Warn People

Discuss your plans for the release at the weekly project meeting.

Preferably set a date for the release immediately after the previous release.

Milestones

Create a launchpad milestone for each project for the version you're planning to release.

Bugs

Note: only project drivers can target bugs to a series so the release manager needs to find bugs tagged with in-stable-icehouse and target them.

  1. Gather a list of bugs fixed since the previous release e.g.
$> git log --no-merges --topo-order 2014.1.1.. | grep -i '\(bug\|lp\)[: #]*' | sed 's/.*\(1[0-9][0-9][0-9][0-9][0-9][0-9]\).*/\1/' > nova-bugs.txt
  1. Sanity check the list of bugs. Check that each has had a patch proposed to the stable branch
$> python showbugs.py $(cat nova-bugs.txt)
  1. Nominate those bugs for the series
$> python nominate.py nova icehouse $(cat nova-bugs.txt)
  1. Target those bugs at the milestone
$> python target.py nova icehouse 2014.1.2 $(cat nova-bugs.txt)
  1. Review the list of bugs targeted to the milestone and fixup Importance and Assignee fields e.g. https://bugs.launchpad.net/nova/+milestone/2014.1.1
  2. Review bugs tagged with in-stable-icehouse and target them appropriately if they haven't already been targeted. Don't forget to remove the tag. e.g. a query for nova
  3. Review bugs tagged with icehouse-backport-potential, untag fixes already backported and consider backporting important ones. e.g. a query for nova.
  4. Check to see if any bugs were nominated for the series
  5. Look at open reviews and make sure the corresponding bugs are targeted. e.g. query for nova.

Call For Testing

Call for testing, see this example

Tag

  1. Tag the release:
$> git tag -s 2014.1.2
$> git push gerrit tag 2014.1.2

Close bugs

  1. Mark all FixCommitted bugs as FixReleased. With a small change:
+series = proj.getSeries(name='icehouse')
+bugtasks = series.searchTasks(status='Fix Committed', omit_targeted=False)

we can use process-fixcommitted-bugs.py:

$> python ./process-fixcommitted-bugs.py --onlymilestone 2014.1.2 --fixrelease nova

NB: script might fail updating bugs with lots of tasks e.g. bug 1251757 - skip them using optional "exceptions" parameters e.g.

$> python ./process-fixcommitted-bugs.py --onlymilestone 2013.2.1 --fixrelease nova 1257293 1251757

Upload The Release

Using http://github.com/openstack-infra/release-tools

  1. Upload the release:
$> python ./upload_release.py nova 2014.1.2

Docs

  1. Update SecurityAdvisories/Icehouse
  2. Write release notes like ReleaseNotes/2014.1.1
  3. Send release announcement like StableBranchRelease/BoilerPlateAnnounce.
  4. Update Releases
  5. Update Getting_The_Code

Rinse, Repeat

  1. Bump version in setup.cfg e.g. https://review.openstack.org/#/q/I3a7170180717bd62fce4cbc2c3a9107187f89fb1,n,z
  2. Decide on date for next release, create milestones

Planned stable/havana releases

 2013.2.4 - last planned, mid Sep 2014

Planned stable/icehouse releases

2014.1.1  Jun 5 2014
2014.1.2  Aug 7 2014
2014.1.3  Oct 2 2014
2014.1.4 - last planned, date TBD, after Juno release