| ----- |
| Helix Release Process |
| ----- |
| ----- |
| 2014-03-19 |
| ----- |
| |
| ~~ Licensed to the Apache Software Foundation (ASF) under one |
| ~~ or more contributor license agreements. See the NOTICE file |
| ~~ distributed with this work for additional information |
| ~~ regarding copyright ownership. The ASF licenses this file |
| ~~ to you under the Apache License, Version 2.0 (the |
| ~~ "License"); you may not use this file except in compliance |
| ~~ with the License. You may obtain a copy of the License at |
| ~~ |
| ~~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~~ |
| ~~ Unless required by applicable law or agreed to in writing, |
| ~~ software distributed under the License is distributed on an |
| ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ~~ KIND, either express or implied. See the License for the |
| ~~ specific language governing permissions and limitations |
| ~~ under the License. |
| |
| ~~ NOTE: For help with the syntax of this file, see: |
| ~~ https://maven.apache.org/guides/mini/guide-apt-format.html |
| |
| Helix Release Process |
| |
| [[1]] Post to dev@helix.apache.org a few days before you plan to do a Helix release |
| |
| [[2]] Your Maven settings (~/.m2/settings.xml) must contain this entry to be able to deploy. |
| |
| +------------- |
| <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 |
| http://maven.apache.org/xsd/settings-1.0.0.xsd"> |
| <!-- ... --> |
| <servers> |
| <server> |
| <id>apache.releases.https</id> |
| <username>[USERNAME]</username> |
| <password>[PASSWORD]</password> |
| </server> |
| </servers> |
| <!-- ... --> |
| </settings> |
| +------------- |
| |
| [[3]] Apache DAV passwords |
| |
| +------------- |
| Add the following info into your ~/.netrc |
| machine git-wip-us.apache.org login <apache username> <password> |
| |
| +------------- |
| [[4]] Release Helix |
| |
| You should have a GPG agent running in the session you will run the maven release commands (preferred), and confirm it works by running "gpg -ab" (type some text and press Ctrl-D). |
| If you do not have a GPG agent running, make sure that you have the "apache-release" profile set in your settings.xml as shown below. |
| |
| |
| GPG configuration in maven settings (~/.m2/settings.xml): |
| |
| +------------- |
| <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 |
| http://maven.apache.org/xsd/settings-1.0.0.xsd"> |
| <!-- ... --> |
| <profiles> |
| <profile> |
| <id>apache-release</id> |
| <properties> |
| <gpg.passphrase>[GPG_PASSWORD]</gpg.passphrase> |
| </properties> |
| </profile> |
| </profiles> |
| <!-- ... --> |
| </settings> |
| +------------- |
| Before release please make sure <<maven-release-plugin version>> in <pom.xml> is <<2.5.1>> or <<newer>>. |
| |
| Run the release |
| |
| +------------- |
| mvn release:prepare |
| mvn release:perform |
| +------------- |
| |
| [[5]] Go to https://repository.apache.org and close your staged repository. Log in, click on Staging Repositories, check your repository, and click Close. Note the repository url (format https://repository.apache.org/content/repositories/orgapachehelix-[NNNN]) |
| |
| [[6]] Stage the release (version format 0.6.6, stagingRepoUrl format https://repository.apache.org/content/repositories/orgapachehelix-[NNNN]) |
| |
| +------------- |
| svn co https://dist.apache.org/repos/dist/dev/helix helix-dev-release |
| cd helix-dev-release |
| sh ./release-script-svn.sh version stagingRepoUrl |
| svn add <new directory created with new version as name> |
| gpg -k email@domain.com >> KEYS |
| gpg --armor --export email@domain.com >> KEYS |
| svn ci |
| +------------- |
| |
| [[7]] Validate the release |
| |
| +------------- |
| # Download sources, extract, build and run tests |
| mvn clean package |
| |
| # Verify license headers |
| mvn -Prat -DskipTests |
| |
| # Download binaries and .asc files |
| |
| # Download release manager's public key - From the KEYS file, get the release manager's public key finger print and run the following command |
| gpg --keyserver pgpkeys.mit.edu --recv-key <key> |
| |
| # Validate authenticity of key |
| gpg --fingerprint <key> |
| |
| # Check signatures of all the binaries |
| gpg <binary> |
| +------------- |
| |
| [[8]] Call for a vote in the dev list and wait for 72 hours for the vote results. |
| |
| +------------- |
| Subject: [VOTE] Apache Helix [VERSION] Release |
| To: dev@helix.apache.org |
| --------------------------------------------------------- |
| Hi, |
| |
| This is to call for a vote on releasing the following candidate as Apache Helix [VERSION]. This is the [N]th release of Helix as an Apache project, as well as the [N - 4]th release as a top-level Apache project. |
| |
| Apache Helix is a generic cluster management framework that makes it easy to build partitioned and replicated, fault-tolerant and scalable distributed systems. |
| |
| Release notes: |
| https://helix.apache.org/[VERSION]-docs/releasenotes/release-[VERSION].html |
| |
| Release artifacts: |
| https://repository.apache.org/content/repositories/orgapachehelix-[NNNN] |
| |
| Distribution: |
| * binaries: |
| https://dist.apache.org/repos/dist/dev/helix/[VERSION]/binaries/ |
| * sources: |
| https://dist.apache.org/repos/dist/dev/helix/[VERSION]/src/ |
| |
| The [VERSION] release tag: |
| https://git-wip-us.apache.org/repos/asf?p=helix.git;a=tag;h=refs/tags/helix-[VERSION] |
| |
| KEYS file available here: |
| https://dist.apache.org/repos/dist/dev/helix/KEYS |
| |
| Please vote on the release. The vote will be open for at least 72 hours. |
| |
| [+1] -- "YES, release" |
| [0] -- "No opinion" |
| [-1] -- "NO, do not release" |
| |
| Thanks, |
| The Apache Helix Team |
| +------------- |
| |
| [[9]] If the sum of PMC/Committer (binding) votes is at least 3, send the following email. Otherwise, repeat the previous step. |
| |
| +------------- |
| Subject: [RESULT][VOTE] Apache Helix [VERSION] Release |
| To: dev@helix.apache.org |
| ----------------------------------------------------------------- |
| Thanks for voting on the [VERSION] release. It has now exceeded 72 hours so I am closing the vote. |
| |
| Binding +1s: |
| [Names of PMC/Committer members who +1'd this release] |
| |
| Nonbinding +1s: |
| [All other +1s] |
| |
| Binding 0s: |
| [Names of PMC/Committer members who 0'd this release] |
| |
| Nonbinding 0s: |
| [All other 0s] |
| |
| Binding -1s: |
| [Names of PMC/Committer members who -1'd this release] |
| |
| Nonbinding -1s: |
| [All other -1s] |
| |
| The vote has passed, thanks a lot to everyone for voting! |
| +------------- |
| |
| [[10]] Move the keys, sources, and binaries from the dev tree to the release tree: |
| |
| +------------- |
| svn rm https://dist.apache.org/repos/dist/release/helix/KEYS |
| svn mv https://dist.apache.org/repos/dist/dev/helix/[VERSION] https://dist.apache.org/repos/dist/release/helix |
| svn cp https://dist.apache.org/repos/dist/dev/helix/KEYS https://dist.apache.org/repos/dist/release/helix |
| +------------- |
| |
| [[11]] Go to https://repository.apache.org and release your staged repository. Log in, click on Staging Repositories, check your repository, and click Release. |
| |
| [[12]] Prepare release notes. Add a page in src/site/apt/releasenotes/ and [VERSION]/src/site/apt/releasenotes and change the value of \<currentRelease\> in parent pom. |
| |
| |
| [[13]] Send out an announcement of the release to Helix developers and users: |
| |
| +------------- |
| Subject: [ANNOUNCE] Apache Helix [VERSION] Release |
| To: dev@helix.apache.org; user@helix.apache.org |
| ------------------------------------------------------------------- |
| The Apache Helix Team is pleased to announce the [NTH] release, |
| [VERSION], of the Apache Helix project. |
| |
| Apache Helix is a generic cluster management framework that makes it easy |
| to build partitioned, fault tolerant, and scalable distributed systems. |
| |
| The full release notes are available here: |
| [link to JIRA-generated release notes] |
| |
| You can declare a maven dependency to use it: |
| |
| <dependency> |
| <groupId>org.apache.helix</groupId> |
| <artifactId>helix-core</artifactId> |
| <version>[VERSION]</version> |
| </dependency> |
| |
| Or download the release sources: |
| http://helix.apache.org/[VERSION]-docs/download.cgi |
| |
| Additional info |
| |
| Website: https://helix.apache.org/ |
| Helix mailing lists: https://helix.apache.org/mail-lists.html |
| |
| We hope you will enjoy using the latest release of Apache Helix! |
| |
| Cheers, |
| Apache Helix Team |
| +------------- |
| |
| [[14]] Celebrate! |
| |
| |