How to perform an Apache release for Samoa:

Settings

First, configure your ~/.m2/settings.xml file to include your credentials.

<settings>
...
  <servers>
    <!-- To publish a snapshot of some part of Maven -->
    <server>
      <id>apache.snapshots.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
    </server>
    <!-- To stage a release of some part of Maven -->
    <server>
      <id>apache.releases.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
    </server>
    <server>
      <id>apache.staging.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
    </server>
   ...
  </servers>
</settings>

To encrypt your password, use Maven's password encryption capabilities.

Note: if it is your first time setting up your gpg keys, please check this page for more information on how to do it.

Step-by-step guide

To run on the clean master branch, make sure you are in the master branch and have the latest version.

*) git branch -vv

(should tell you if you are in master or not)

*) git checkout master

(should get you to master)

*) git pull

Create a branch for the release candidate. Set it to track a release branch on the apache remote.

git co -b releases/X.Y.Z-incubating-RC0
git push -u apache

Test your settings:

mvn clean install -Papache-release -Pall -DcreateChecksum=true -DskipTests -Dmaven.javadoc.skip=true -Dgpg.passphrase=********

This will create the release artifacts, sign them, and put them in ~/.m2/repository/org/apache/samoa. Check that everything is alright before proceeding to the next step.

Note: If you messed up the release and you are repeating these steps due to some error, make sure you remove the directory ~/.m2/repository/org/apache/samoa, for the new artifacts to be placed again.

Perform the release:

mvn release:prepare -Papache-release -Pall -DautoVersionSubmodules=true -DdevelopmentVersion=X.Y.Z-incubating-SNAPSHOT -Darguments="-DcreateChecksum=true  -DskipTests -Dmaven.javadoc.skip=true -Dgpg.passphrase=********" 
mvn release:perform -Papache-release -Pall -Darguments="-DcreateChecksum=true -DskipTests -Dmaven.javadoc.skip=true -Dgpg.passphrase=********"

Go to https://repository.apache.org to close the staging repository.

Note: if the double quotes do not work, the mvn arguments will be probably skipped. In this case, please try single quotes.

Publish artifacts on svn:

svn co https://dist.apache.org/repos/dist/dev/incubator/samoa samoa-apache-dist
cd samoa-apache-dist
cp -r ~/.m2/repository/org/apache/samoa/samoa/X.Y.Z-incubating .
mv X.Y.Z-incubating X.Y.Z-incubating-rcW
svn add X.Y.Z-incubating-rcW

A X.Y.Z-incubating-rcW
A (bin) X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating-source-release.zip
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating.pom.md5
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating.pom.asc
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating-source-release.zip.md5
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating-source-release.zip.asc
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating.pom.sha1
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating-source-release.zip.sha1
A X.Y.Z-incubating-rcW/samoa-X.Y.Z-incubating.pom

svn commit

Check that only the sources, pom, checksums (md5, sha1), and signatures (asc) are added.

Log the commit with the release number "X.Y.Z-incubating-RCW" (substitute X.Y.Z and W for valid version and RC numbers).

Vote:

First, start a vote on the dev@ mailing list. Once the vote has passed, forward the results of the vote to the general@incubator mailing list. Once this second vote has also passed, you can promote the RC to a release.

Upload the artifacts to https://dist.apache.org/repos/dist/release/incubator/ via svn (note the difference: the release goes under the /release branch, the RC artifacts under the /dev branch).

svn mkdir https://dist.apache.org/repos/dist/release/incubator/samoa/X.Y.Z-incubating
svn cp X.Y.Z-incubating-rcW/* https://dist.apache.org/repos/dist/release/incubator/samoa/X.Y.Z-incubating/

After the second vote has been passed, go ahead and perform the release by logging into Nexus system and pushing the release button of the particular version. This will move the components into the release repository of OSSRH where it will be synced to the Central Repository. Check that this is done by visiting the following site and checking that the new release is available:

https://repository.apache.org/content/repositories/releases/org/apache/samoa/

Optionally deploy commodity binary packages via https://repository.apache.org and send an [ANNOUNCE] email to announce@apache.orgdev@, and general@incubator mailing lists.

Template email:

Hi,
The Apache SAMOA team is proud to announce the release of Apache SAMOA version X.Y.Z-incubating.
Apache SAMOA is a platform for mining big data streams. It provides a collection of distributed streaming algorithms for the most common data mining and machine learning tasks such as classification, clustering, and regression, as well as programming abstractions to develop new algorithms that run on top of distributed stream processing engines (DSPEs). It features a pluggable architecture that allows it to run on several DSPEs such as Apache Storm, Apache S4, Apache Samza, and Apache Flink.
Release artifacts available at
Maven artifacts available at
More details on Apache SAMOA can be found at
Thanks to all the contributors who made this release possible.
Thanks,
The Apache SAMOA team
----
DISCLAIMER
Apache SAMOA is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

When you mess up (because you probably will!):

If you messed up the release and you are repeating these steps due to some error, make sure you:

*) Cleanup your local maven:

mvn release:clean

*) Probably you need to remove the branch (locally and remotely):

git push --delete apache releases/X.Y.Z-incubating-RC0

git branch -D releases/X.Y.Z-incubating-RC0

*) Remove the tags locally and remotely:

(to see available tags locally) git tag -l

git tag -d vX.Y.Z-incubating

git push --delete apache vX.Y.Z-incubating

*) Remove the directory ~/.m2/repository/org/apache/samoa, for the new artifacts to be placed again.

*) Repeat from the beginning the steps!

References

http://www.apache.org/dev/publishing-maven-artifacts.html

http://www.apache.org/dev/release-signing.html

http://incubator.apache.org/guides/release.html

http://vincent.demeester.fr/posts/2012-07-23-maven-release-gitflow/

https://github.com/apache/incubator-tinkerpop/blob/master/README.asciidoc