Publishing Apache Cassandra Releases

Prerequisites

  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: http://www.apache.org/dist/cassandra/KEYS
  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
    <settings>
      <servers>
        <!-- once you have got things working you can encrypt the passwords for the servers -->
        <server>
          <id>apache.snapshots.https</id>
          <username><!-- your apache ldap username --></username>
          <password><!-- your apache ldap password --></password>
        </server>
        <server>
          <id>apache.releases.https</id>
          <username><!-- your apache ldap username --></username>
          <password><!-- your apache ldap password --></password>
        </server>
      </servers>
      <profiles>
        <profile>
          <id>apache-release</id>
          <properties>
    
            <gpg.keyname><!-- enough of the key id to id it --></gpg.keyname>
    
            <!-- Use an agent-->
            <gpg.useagent>true</gpg.useagent>
    
          </properties>
        </profile>
      </profiles>
    </settings>
    
    Notes
    • The GPG keyname is the sec hex code for the key, e.g. if you had
      $ gpg --list-secret-keys
      /Users/stephenc/.gnupg/secring.gpg
      ----------------------------------
      
      sec   1024D/B620D787 2009-10-22
      uid                  Stephen Connolly <stephenc@apache.org>
      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.

Using repository.apache.org

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 repository.apache.org
  2. Login to repository.apache.org 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 https://repository.apache.org/content/repositories/<staging repository id>/
  3. Make a note of the NEWS.txt URL: https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<sha1 ID> (shorten if desired)
  4. Make a note of the CHANGES.txt URL: https://git-wip-us.apache.org/repos/asf?p=cassandra.git;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 https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310865&version=#########. Shorten that url using Apache's URL shortening service.
  6. Call a release vote on the dev@cassandra.apache.org 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: https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=commit;h=<sha1 ID>
    Artifacts: https://repository.apache.org/content/repositories/<staging repo ID>/org/apache/cassandra/apache-cassandra/X.Y.Z/
    Maven repository (staging): https://repository.apache.org/content/repositories/<staging repo ID>
    
    The will remain open for 72 hours, (longer if need be).
    
    [1]: http://s.apache.org/link (CHANGES.txt)
    [2]: http://s.apache.org/link (NEWS.txt)
    [3]: http://s.apache.org/link (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 people.apache.org and put the release artifacts into /www/www.apache.org/dist/cassandra/<version>, e.g.
    STAGING_REPOID="orgapachecassandra-062"
    RELEASE="2.0.0-rc1"
    
    for type in bin src; do \
      for part in gz gz.md5 gz.sha1 gz.asc; do \
        curl -O https://repository.apache.org/content/repositories/$STAGING_REPOID/org/apache/cassandra/apache-cassandra/$RELEASE/apache-cassandra-$RELEASE-$type.tar.$part; \
      done \
    done
    
    find . -exec chmod a+rx,g+w {} \;
    find . -type f -exec chmod 664 {} \;
    
  4. Login to repository.apache.org and release the staging repository.
  5. Remove the tentative tag; Create the permanent tag (preferably signed / annotated)
  6. Wait for the sync to http://www.apache.org/dist/cassandra before continuing
  7. Update the website.
  8. Publish the announce email to user@cassandra.apache.org
    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:
    
      http://cassandra.apache.org/
    
    Downloads of source and binary distributions are listed in our download section:
    
      http://cassandra.apache.org/download/
    
    ''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 https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310865&version=#########&styleName=Text you might have to delete some of the blank lines''
    
    Enjoy,
    
    The Cassandra team.
    
  9. Add the release to the PMC's next board report
  10. Remove Old Versions from ASF Distribution Directory. Login to people.apache.org and remove any superceded releases from /www/www.apache.org/dist/cassandra (after confirming that they exist in /www/archive.apache.org/dist/cassandra).

If the vote fails

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

https://c.statcounter.com/9397521/0/fe557aad/1/|stats

  • No labels