Jump to: navigation, search

Zaqar/How to Release

Client Releases

The process of releasing a client library is similar to that followed for server releases. However, in this case, the PTL acts as the "release manager". Note that you must request in #openstack-infra that you be added to the "marconi-ptl" group in Gerrit, or else git will complain that you don't have permission to push to the gerrit repo.

Versioning

In order to follow PEP440, we need to map OpenStack milestones to version numbers. The following mapping is proposed. Note that the interim milestone versions are only shown for 2014.1, but one can imagine them following a similar schema for subsequent development cycles. Likewise, examples of bugfix releases, which increment the PATCH version only, are only given for a single release.

OpenStack PEP440
2014.1 0.0.1
2014.2.b1 1.0.0b1
2014.2.b2 1.0.0b2
2014.2.b3 1.0.0b3
2014.2.rc1 1.0.0rc1
2014.2 1.0.0
2014.2 - Bugfix #1 1.0.1
2014.2 - Bugfix #2 1.0.2
2015.1 1.1.0
2015.2 1.2.0
2016.1 2.1.0
2016.2 2.2.0
2017.1 3.1.0
2017.2 3.2.0

Process

1. Submit and merge a patch to bump the library version. Also, set an appropriate classifier in setup.cfg (i.e., "Development Status :: 4 - Beta" or "Development Status :: 5 - Production/Stable").

2. Make sure the local commit you are tagging is actually present with the same SHA on the published repositories.

3. Add the release tag, for example, “0.0.1” with the following description: “Marconi client version 0.0.1”; it should be signed by your personal gpg key:

git tag -s 0.0.1

4. Sanity-check the tag. You want to make sure the SHA matches a commit in the upstream repo: “git tag -v 0.0.1”. You should see something like:

object 9e5323500646c98db712a1c322dd4342cd1d708a
type commit
tag 0.0.1
tagger kgriffs <kurt.griffiths@rackspace.com> 1399313788 -0500

Marconi client version 0.0.1

This is our first beta release supporting the entire v1.0 API. CLI
usage is still a work in progress, but applications can now code
against the entire v1.0 API by importing the marconiclient package.
gpg: Signature made Mon May  5 13:16:54 2014 CDT using RSA key ID AD4A3478
gpg: Good signature from "Kurt E. Griffiths (@ work) <kurt.griffiths@rackspace.com>"
gpg:                 aka "Kurt E. Griffiths <mail@kgriffs.com>"
gpg:                 aka "[jpeg image of size 25764]"

4. Push the new tag to the gerrit repo. Be sure to PUSH JUST THE ONE TAG.

git push gerrit 0.0.1

5. Now go to http://status.openstack.org/zuul/ and you should see something like:

Marconi-client-release.png


6. When openstack/python-marconiclient disappears, the release is now available. Sanity-check the following links for the right versions:


7. Go to the corresponding series in launchpad (e.g., https://launchpad.net/python-marconiclient/juno) and release the version using the “Release now” link in the table; specify release date in yyyy-mm-dd format and include some notes, e.g.:

This package is available in pypi, just execute pip install marconi to install.
Tarball: http://tarballs.openstack.org/python-marconiclient/python-marconiclient-0.0.1.tar.gz

This is our first beta release supporting the entire v1.0 API. CLI
usage is still a work in progress, but applications can now code
against the entire v1.0 API by importing the marconiclient package.

8. Now you should change the status of all bugs for this version from "Fix Commited" to "Fix Released"

9. Upload the tarball to the released launchpad milestone (https://launchpad.net/marconi/+milestone/juno-1) using the "Add download file" link. Note that this link only appears after the milestone has been "released".

10. Sanity-check the PyPI release:

 $ pip install python-marconiclient

11. Add the next milestone to the series, or if at the end of a cycle, start a new series and add the first milestone. When adding a new series, be sure to change the release manager to "marconi-drivers".

12. Send an email to the community!

Server Releases

We follow the standard process here: https://wiki.openstack.org/wiki/ReleaseTeam/How_To_Release