Publishing Apache Cassandra Releases


  1. You need permissions to deploy Cassandra artifacts to the Maven Central Repository.
  2. You need to have a GPG public key listed among those at:
  3. Follow the environment configuration steps outlined at: Publishing Maven Artifacts. If you are lazy, the short version is that you need to have a minimal ~/.m2/settings.xml file which at least defines the following
        <!-- once you have got things working you can encrypt the passwords for the servers -->
          <username><!-- your apache ldap username --></username>
          <password><!-- your apache ldap password --></password>
          <username><!-- your apache ldap username --></username>
          <password><!-- your apache ldap password --></password>
            <gpg.keyname><!-- enough of the key id to id it --></gpg.keyname>
            <!-- Use an agent-->
    • The GPG keyname is the sec hex code for the key, e.g. if you had
      $ gpg --list-secret-keys
      sec   1024D/B620D787 2009-10-22
      uid                  Stephen Connolly <>
      ssb   4096g/A2590985 2009-10-22
      You would use <gpg.keyname>B620D787</gpg.keyname>
    • Once you have things working with your ldap password in plaintext, it is highly recommended that you use Maven's encryption support to encrypt the password.


Please read the Common Procedures for details of how to close, drop and release stanging repositories.

Making a release

To make a release:

  1. Make a full build from a real clean base, i.e. use the following sequence of commands:
    ant realclean
    ant publish -Drelease=true
    That will build all the required artifacts and sign them with your GPG signature and publish them to a staging repository on
  2. Login to with your Apache LDAP username and password. Select Staging Repositories and find the open repository that you just deployed to and close it. Make note of the URL of the staging repository (it will look something like<staging repository id>/
  3. Make a note of the NEWS.txt URL:;a=blob_plain;f=NEWS.txt;hb=<sha1 ID> (shorten if desired)
  4. Make a note of the CHANGES.txt URL:;a=blob_plain;f=CHANGES.txt;hb=<sha1 ID> (shorted if desired)
  5. Goto The Versions tab in JIRA. Select the Version being released, and Copy the Release Notes URL. It will look something like Shorten that url using Apache's URL shortening service.
  6. Call a release vote on the mailing list. e.g.
    Subject: [VOTE] Release Apache Cassandra X.Y.Z
    I propose the following artifacts for release as X.Y.Z.
    Git: <tag name>/<sha1 ID>
    Gitweb:;a=commit;h=<sha1 ID>
    Artifacts:<staging repo ID>/org/apache/cassandra/apache-cassandra/X.Y.Z/
    Maven repository (staging):<staging repo ID>
    The will remain open for 72 hours, (longer if need be).
    [1]: (CHANGES.txt)
    [2]: (NEWS.txt)
    [3]: (Release notes from JIRA)

If The Vote Passes

  1. Send a message declaring the vote closed, and summarizing the results.
  2. Mark the version as released in JIRA
  3. Login to and put the release artifacts into /www/<version>, e.g.
    for type in bin src; do \
      for part in gz gz.md5 gz.sha1 gz.asc; do \
        curl -O$STAGING_REPOID/org/apache/cassandra/apache-cassandra/$RELEASE/apache-cassandra-$RELEASE-$type.tar.$part; \
      done \
    find . -exec chmod a+rx,g+w {} \;
    find . -type f -exec chmod 664 {} \;
  4. Login to and release the staging repository.
  5. Remove the tentative tag; Create the permanent tag (preferably signed / annotated)
  6. Wait for the sync to before continuing
  7. Update the website.
  8. Publish the announce email to
    Subject: [ANN] Apache Cassandra X.Y.Z released
    The Cassandra team is pleased to announce the release of Apache Cassandra
    version X.Y.Z.
    Cassandra is a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model. You can read more here:
    Downloads of source and binary distributions are listed in our download section:
    ''Some blurb about this specific release's goals and highlights... sorry we can't template everything for you ;-)''
    Release Notes - Cassandra - Version X.Y.Z
    ''Paste in from the *Edit/Copy Release Notes* box at the bottom of you might have to delete some of the blank lines''
    The Cassandra team.
  9. Add the release to the PMC's next board report
  10. Remove Old Versions from ASF Distribution Directory. Login to and remove any superceded releases from /www/ (after confirming that they exist in /www/

If the vote fails

  1. Login to and drop the staging repository and start over again with Take N+1|stats

  • No labels