Before you do a release you'll need a signing key that is registered with apache. If you already have one, you can skip this section. Otherwise, here are the steps to do:
Skip this section if this is NOT the first release in a series (i.e. release X.Y.0).
Commit these changes to trunk.
svn commit -m "Preparing for release X.Y.Z" |
Create a branch for the release series:
svn copy https://svn.apache.org/repos/asf/zookeeper/trunk https://svn.apache.org/repos/asf/zookeeper/branches/branch-X.Y -m "Branching for X.Y releases" |
Commit these changes to trunk.
svn commit -m "Preparing for X.Y+1.0 development" |
These operations take place in the release branch:
Check out the branch with:
svn co https://svn.apache.org/repos/asf/zookeeper/branches/branch-X.Y |
git clone -b branch-X.Y https://git-wip-us.apache.org/repos/asf/zookeeper.git
If not already done, merge desired patches from trunk into the branch and commit these changes. You can find the revision numbers using svn log CHANGES.txt in the branch and in trunk.
cd branch-X.Y svn merge -rR1:R2 ../trunk . svn commit -m "Merge -r R1:R2 from trunk to X.Y branch. Fixes: ZOOKEEPER-A, ZOOKEEPER-B." |
Commit these changes.
svn commit -m "Preparing for release X.Y.Z" |
Tag the release candidate (R is the release candidate number, and starts from 0):
svn copy https://svn.apache.org/repos/asf/zookeeper/branches/branch-X.Y \ https://svn.apache.org/repos/asf/zookeeper/tags/release-X.Y.Z-rcR -m "ZooKeeper X.Y.Z-rcR release." |
Build the release & run unit tests.
ant test package tar |
Sign the toplevel zookeeper-X.Y.Z.jar
gpg --armor --output zookeeper-X.Y.Z.jar.asc --detach-sig zookeeper-X.Y.Z.jar |
Sign each file in dist-maven
gpg --armor --output file.asc --detach-sig file |
Tar/GZ the release directory as zookeeper-X.Y.Z.tar.gz
tar -caf zookeeper-X.Y.Z.tar.gz zookeeper-X.Y.Z |
Generate the MD5/SHA1 checksums for the release artifact.
md5sum zookeeper-X.Y.Z.tar.gz > zookeeper-X.Y.Z.tar.gz.md5 sha1sum zookeeper-X.Y.Z.tar.gz > zookeeper-X.Y.Z.tar.gz.sha1 |
Sign the release
gpg --armor --output zookeeper-X.Y.Z.tar.gz.asc --detach-sig zookeeper-X.Y.Z.tar.gz |
Copy release files to a public place.
ssh people.apache.org mkdir public_html/zookeeper-X.Y.Z-candidate-0 scp -p zookeeper-X.Y.Z.tar.gz* people.apache.org:public_html/zookeeper-X.Y.Z-candidate-0 |
Create ~/.m2/settings.xml introducing the values that are specific to you:
<settings> <servers> <server> <id>apache.snapshots.https</id> <username>XXXXXXX</username> <password>XXXXXXXX</password> </server> <server> <id>apache.staging.https</id> <username>XXXXXXX</username> <password>XXXXXXX</password> </server> </servers> <profiles> <profile> <id>gpg</id> <properties> <gpg.passphrase>XXXXXXX</gpg.passphrase> </properties> </profile> </profiles> </settings> |
See http://maven.apache.org/guides/mini/guide-encryption.html for details on encrypting the passwords rather than leaving them in the clear.
Run the following on the branch check out
ant mvn-deploy -Dstaging=true |
Click on Log In in the upper right corner. Log in using your apache user name and password.
In the left navigation pane, select Staging Repositories.
Click the Close button above the Repository names. This makes your release candidate available at the Staging level.
If you have previously staged an older release candidate with the same version number, and it is still showing in the Repository list, you must select and Drop the old one now.
Confirm that your new release candidate is visible at https://repository.apache.org/content/groups/staging/org/apache/zookeeper/zookeeper/ with correct file modification dates.
Call for a release vote on dev (note dev@ and not user@, the user list is for discussion of released software only) at zookeeper.apache.org. Here is a sample email (from 3.4.6 release):
In the below release candidate dev mail format, we need to change the 'The tag to be voted upon:' section like,
"The RC tag in git to be voted upon: release-X.Y.Z-rcR"
Subject: [VOTE] Apache ZooKeeper release 3.4.6 candidate 0 This is a bugfix release candidate for 3.4.6. It fixes 117 issues, including issues that affect leader election, Zab, and SASL authentication. The full release notes is available at: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310801&version=12323310 *** Please download, test and vote by March 9th 2014, 23:59 UTC+0. *** Source files: http://people.apache.org/~fpj/zookeeper-3.4.6-candidate-0/ Maven staging repo: https://repository.apache.org/content/groups/staging/org/apache/zookeeper/zookeeper/3.4.6/ The tag to be voted upon: https://svn.apache.org/repos/asf/zookeeper/tags/release-3.4.6-rc0 ZooKeeper's KEYS file containing PGP keys we use to sign the release: http://www.apache.org/dist/zookeeper/KEYS Should we release this candidate? |
Once three PMC members have voted for a release, it may be published.
Tag the release:
svn move https://svn.apache.org/repos/asf/zookeeper/tags/release-X.Y.Z-rcR \ https://svn.apache.org/repos/asf/zookeeper/tags/release-X.Y.Z -m "ZooKeeper X.Y.Z release." |
Update the version number to the next logical SNAPSHOT version (e.g. X.Y.Z to X.Y.Z+1-SNAPSHOT)
Check in release files to the distribution server
svn co https://dist.apache.org/repos/dist/release/zookeeper/ zookeeper_dist cd zookeeper_dist mkdir zookeeper-X.Y.Z # copy tgz/asc/md5/sha1 files from your public_html to zookeeper-X.Y.Z svn add zookeeper-X.Y.Z svn ci -m "Add ZooKeeper X.Y.Z release" |
The release directory usually contains just two releases, the most recent from two branches, with a link named 'stable' to the most recent recommended version.
cd zookeeper_dist # don't do the following rm for the time being, until we are sure the new rel is actually stable --> ### rm -rf zookeeper-A.B.C rm stable; rm current ln -s zookeeper-A.B.D stable ln -s zookeeper-A.B.D current svn ci -m 'Updating links' |
Prepare to edit the website.
svn co https://svn.apache.org/repos/asf/zookeeper/site |
Copy the new release documentation into the content/doc directory
cd site/trunk/content/doc mkdir rX.Y.Z cd rX.Y.Z tar xvf /www/www.apache.org/dist/zookeeper/zookeeper-X.Y.Z/zookeeper-X.Y.Z.tar.gz 'zookeeper-X.Y.Z/docs' mv zookeeper-X.Y.Z/docs/* . rm -r zookeeper-X.Y.Z cd .. svn add rX.Y.Z |
Regenerate the site, review it, then commit it. (checkout https://svn.apache.org/repos/infra/websites/cms/build if you haven't already)
cd site/trunk .../apache_cms_build/build_site.pl --source-base . --target-base /tmp/sitegen <open /tmp/sitegen/index.html in your browser and verify the site> svn commit -m "Updated site for release X.Y.Z." |
Update the "current" doc pointer if necessary (as CMS doesn't currently support symlinks in build/staging we need to push this directly to production)
svn co https://svn.apache.org/repos/infra/websites/production/zookeeper/content cd content/doc rm current ln -s rX.Y.Z current svn commit -m "Updated current pointer for release X.Y.Z" |
Deploy your site changes.
https://cms.apache.org/redirect?uri=http%3A//zookeeper.apache.org/ publish the site changes |
Send announcements to the user and developer lists once the site changes are visible. Here is a sample email:
Subject: [ANNOUNCE] Apache ZooKeeper X.Y.Z The Apache ZooKeeper team is proud to announce Apache ZooKeeper version X.Y.Z ZooKeeper is a high-performance coordination service for distributed applications. It exposes common services - such as naming, configuration management, synchronization, and group services - in a simple interface so you don't have to write them from scratch. You can use it off-the-shelf to implement consensus, group management, leader election, and presence protocols. And you can build on it for your own, specific needs. For ZooKeeper release details and downloads, visit: http://zookeeper.apache.org/releases.html ZooKeeper X.Y.Z Release Notes are at: http://zookeeper.apache.org/doc/rX.Y.Z/releasenotes.html We would like to thank the contributors that made the release possible. Regards, The ZooKeeper Team |
Support is now available for pushing the jar artifacts to the Apache maven repository.
WARNING: the process has changed but the docs not yet updated, see https://issues.apache.org/jira/browse/ZOOKEEPER-1430
sign and md5sum maven-metadata.xml
md5sum maven-metadata.xml > maven-metadata.xml.md5 gpg2 --armor --output maven-metadata.xml.asc --detach-sig maven-metadata.xml |
Before the release, run the following smoke tests (at least).