 -----
 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:
~~ http://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:
http://helix.apache.org/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: http://helix.apache.org/
Helix mailing lists: http://helix.apache.org/mail-lists.html

We hope you will enjoy using the latest release of Apache Helix!

Cheers,
Apache Helix Team
+-------------

 [[14]] Celebrate!


