Helix Release Process
- Post to dev@helix.apache.org a few days before you plan to do a Helix release
- 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>
- Apache DAV passwords
Add the following info into your ~/.netrc machine git-wip-us.apache.org login <apache username> <password>
- 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
- 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])
- 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
- 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>
- 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://github.com/apache/helix/releases/tag/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
- 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!
- 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
- Go to https://repository.apache.org and release your staged repository. Log in, click on Staging Repositories, check your repository, and click Release.
- 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.
- 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
- Celebrate!