blob: a9d55f60762c7df9fb8cc0be342298760c538536 [file] [log] [blame]
-----
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!