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!

Back to top

Reflow Maven skin maintained by Olivier Lamy.

Apache Helix, Apache, the Apache feather logo, and the Apache Helix project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Privacy Policy