Jump to: navigation, search

Difference between revisions of "TripleO/ReleaseManagement"

(How to make a release)
m (How to make a release)
 
(12 intermediate revisions by 6 users not shown)
Line 2: Line 2:
  
 
# [https://help.launchpad.net/YourAccount/ImportingYourPGPKey Upload] your GPG key to Launchpad
 
# [https://help.launchpad.net/YourAccount/ImportingYourPGPKey Upload] your GPG key to Launchpad
# Become a member of [https://review.openstack.org/#/admin/groups/200,members tripleo-ptl] ACL group in Gerrit
+
# Become a member of [https://review.openstack.org/#/admin/groups/200,members tripleo-release] ACL group in Gerrit
  
 
==== Projects ====
 
==== Projects ====
Line 9: Line 9:
  
 
* [https://launchpad.net/os-apply-config os-apply-config]
 
* [https://launchpad.net/os-apply-config os-apply-config]
 +
* [https://launchpad.net/os-cloud-config os-cloud-config]
 +
* [https://launchpad.net/os-collect-config os-collect-config]
 
* [https://launchpad.net/os-refresh-config os-refresh-config]
 
* [https://launchpad.net/os-refresh-config os-refresh-config]
* [https://launchpad.net/os-collect-config os-collect-config]
+
* [https://launchpad.net/os-net-config os-net-config]
 
* [https://launchpad.net/diskimage-builder diskimage-builder]
 
* [https://launchpad.net/diskimage-builder diskimage-builder]
 +
* [https://launchpad.net/diskimage-builder dib-utils]
 
* [https://launchpad.net/tripleo tripleo-heat-templates]
 
* [https://launchpad.net/tripleo tripleo-heat-templates]
 
* [https://launchpad.net/tripleo tripleo-image-elements]
 
* [https://launchpad.net/tripleo tripleo-image-elements]
Line 23: Line 26:
 
===== Stable Branches =====
 
===== Stable Branches =====
  
Use the project admin interface of Gerrit to create a new branch for a project from the latest SHA1. A release should be done of the same SHA1 at the time the branch is created that bumps the MINOR version of the previous tag. A release should then also be done from the new branch that bumps the PATCH version of the previous tag. Future releases from the branch should only ever increment PATCH so that there is a continual upgrade path from the stable branch.
+
We create stable branches under origin/stable for some projects. When a stable branch is ready to be cut, ask an OpenStack release manager to create the branches. Once the branches are created, a release should be done from the master branch that bumps the MAJOR version (.X) from the previous tag. This allows future releases out of the stable branch to bump the MINOR (.Y) and PATCH (.Z) version continually as needed.
 
 
We create stable branches for:
 
* tripleo-image-elements
 
* tripleo-heat-templates
 
* tuskar
 
* tripleo-incubator (Note we do '''not''' do releases of tripleo-incubator)
 
  
 
==== How to make a release ====
 
==== How to make a release ====
  
 
* Go to the project dir
 
* Go to the project dir
* Update your clone
+
* Update your clone. Replace master with the name of a stable branch if you are releasing from a branch.
 
  git remote update
 
  git remote update
 
  git checkout master && git pull
 
  git checkout master && git pull
  
 
* Find the version number of the last release among the other tags
 
* Find the version number of the last release among the other tags
  git tag | sort --version-sort
+
  git describe --abbrev=0
 
+
  LATEST_TAG=$(git describe --abbrev=0)
* Find out what has changed since the last release
 
  git log -u --no-merges $LAST_VERSION..HEAD
 
  
* Create a signed tag bumping the version number according to the versioning scheme described above
+
* Find out what has changed since the last release; if there are no changes, there is no reason to bump the version and do a new release
  git tag -s X.Y.Z
+
  git log -u --no-merges $LATEST_TAG..HEAD
  
* Verify the tag GPG signature
+
* Submit a release request for the project using [https://github.com/openstack/releases/blob/master/README.rst#deliverable-files a deliverable file] against the openstack/release repository. For example, this is [https://review.openstack.org/#/c/303986/ a submission] for os-net-config.
git tag -v $NEW_VERSION
 
  
* Push the created tag to Gerrit
+
* If needed, prepare an update for openstack/requirements upper-constraints.txt to ensure the new release is tested in the gate. Use a Depends-On tag in the commit message to tie the patch to the original release request so that the requirements and constraints patch will not merge until the release request merges. Leave a comment on the release request linking it to the requirements repository update. For example, this is [https://review.openstack.org/#/c/303987/ a submission] for os-net-config.
git push gerrit $NEW_VERSION
 
  
* Use [https://github.com/ttx/openstack-releasing/blob/master/process_bugs.py process_bugs] util to close all the bugs which are in 'Fix committed' state. Note that tripleo-heat-templates and tripleo-image-elements do not have separate projects in launchpad and fall under the tripleo project instead. The bugs that are Fix Committed in tripleo should probably be manually double checked to make sure there were part of a release.
+
* Use [https://github.com/ttx/openstack-releasing/blob/master/process_bugs.py process_bugs] util to close all the bugs which are in 'Fix committed' state. Note that tripleo-heat-templates and tripleo-image-elements do not have separate projects in launchpad and fall under the tripleo project instead.  The dib-utils project is tracked under the diskimage-builder launchpad project. The bugs that are Fix Committed in tripleo should probably be manually double checked to make sure there were part of a release.
 
  python process_bugs.py $PROJECT_NAME --fixrelease
 
  python process_bugs.py $PROJECT_NAME --fixrelease

Latest revision as of 13:22, 11 April 2016

Prerequisites

  1. Upload your GPG key to Launchpad
  2. Become a member of tripleo-release ACL group in Gerrit

Projects

Currently, we make releases of the following projects on a regular basis:

Versioning scheme

Generally, we follow the rules of Semantic Versioning, but as long as 1.0.0 version of a project hasn't been released, we use 0.MINOR.PATCH versioning scheme, bumping MINOR only when we do something incompatible with the previous release, and bumping PATCH part otherwise.

Stable Branches

We create stable branches under origin/stable for some projects. When a stable branch is ready to be cut, ask an OpenStack release manager to create the branches. Once the branches are created, a release should be done from the master branch that bumps the MAJOR version (.X) from the previous tag. This allows future releases out of the stable branch to bump the MINOR (.Y) and PATCH (.Z) version continually as needed.

How to make a release

  • Go to the project dir
  • Update your clone. Replace master with the name of a stable branch if you are releasing from a branch.
git remote update
git checkout master && git pull
  • Find the version number of the last release among the other tags
git describe --abbrev=0 
LATEST_TAG=$(git describe --abbrev=0)
  • Find out what has changed since the last release; if there are no changes, there is no reason to bump the version and do a new release
git log -u --no-merges $LATEST_TAG..HEAD
  • Submit a release request for the project using a deliverable file against the openstack/release repository. For example, this is a submission for os-net-config.
  • If needed, prepare an update for openstack/requirements upper-constraints.txt to ensure the new release is tested in the gate. Use a Depends-On tag in the commit message to tie the patch to the original release request so that the requirements and constraints patch will not merge until the release request merges. Leave a comment on the release request linking it to the requirements repository update. For example, this is a submission for os-net-config.
  • Use process_bugs util to close all the bugs which are in 'Fix committed' state. Note that tripleo-heat-templates and tripleo-image-elements do not have separate projects in launchpad and fall under the tripleo project instead. The dib-utils project is tracked under the diskimage-builder launchpad project. The bugs that are Fix Committed in tripleo should probably be manually double checked to make sure there were part of a release.
python process_bugs.py $PROJECT_NAME --fixrelease