Apache Shindig Release Process

This document describes how Apache Shindig's committers will make a release.

  1. Release Discussions
  2. Prepare The Release
  3. Stage The Release
  4. Deploy The Documentation
  5. Propose A Vote
  6. Publish The Release
  7. Publish The Website
  8. Announce The Release
  9. Celebrate :o)
  10. Notes

Notes:

  1. This process is based on the Maven Release Process. Please read it firstly for the prerequisites and technical notes.
  2. The items 2 to 5 should take you 1-2 hours, depending your machine and your Internet connection.
  3. Some of the build steps require more than the default amount of maven memory. You should set MAVEN_OPTS to a larger value, -Xmx512m seems to be sufficient.

1. Release Discussions

The starting point will be a consensus in the developer community about the release and the JIRA issues to include (or not) in the next release. Typically, the discussion will be on the Dev List.

2. Prepare The Release

Duration: 20 min

Now that everybody in the community is happy to push a release, the release manager needs to verify the source code before to continue:

  1. Make sure there are no snapshots (less the current version) in the POMs to be released.
  2. Check that your POMs will not lose content when they are rewritten during the release process.
    • mvn release:prepare -DdryRun=true -Papache-release
    • Diff the original file pom.xml with the one called pom.xml.tag to see if the license or any other info has been removed. The only things that should be different between these files are the version and scm elements. Any other changes, you must backport yourself to the original pom.xml file and commit before proceeding with the release.
    • Verify that all Apache Shindig modules will be touched, including assembly and samples.

Next, prepare the release by calling Maven:

mvn release:clean -Papache-release
mvn release:prepare -Papache-release

Notes:

  1. -Papache-release is very important since assembly and samples modules are not included by default in the build (for productivity reasons).
  2. Preparing the release will create a new tag in SVN, automatically checking in on your behalf. Verify the SVN logs in the Commit List or review the generated tag.
  3. All license headers and legal files will be checked by RAT (Release Audit Tool).
  4. Instead of configuring your Maven environment to store your SVN credentials you can pass them on the command line, for example
    mvn release:prepare -Papache-release -Dusername=username -Dpassword=password
    

3. Stage The Release

Duration: 30 min

Call Maven to publish the generated artifacts:

mvn release:perform -Papache-release

Note: All artifacts will be signed and pushed to https://repository.apache.org/.

You can use the following command to download all the artifacts from the repository.

wget -r  -H -t1 -nd -N -np  -erobots=off -i https://repository.apache.org/content/repositories/orgapacheshindig-{repo-id}/org/apache/shindig/

Close the staging repository as described in the points 5 and 6 of the Maven Release Process.

4. Deploy The Documentation

Duration: 20 min

Call Maven to publish the generated technical site:

cd target/checkout
mvn site -Preporting
mvn site:deploy

Optional: Update the current website.

5. Propose A Vote

Start a release vote on the Dev List. The vote must be aligned with the Apache vote process.

Typically, the mail should include the Jira release notes, the staging repository URL and the site URL, for instance:

To: "Shindig Developers List" 
Subject: [VOTE] Release Apache Shindig version X.Y

Hi,

We solved N issues:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=XXX&styleName=Html&projectId=12310741

There are still a couple of issues left in JIRA:
https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=12310741&status=1

Staging repo:
https://repository.apache.org/content/repositories/shindig-staging-[YOUR REPOSITORY ID]/

Web site:
http://shindig.apache.org/

Vote open for 72 hours.

[ ] +1
[ ] +0
[ ] -1

6. Publish The Release

Promote the release as described in the points 10 of the Maven Release Process.

Also, update Jira to specify the release date.

Publish The Website

Update the download page.

8. Announce The Release

Create an announcement similar to:

From: YOUR_APACHE_USERNAME@apache.org
To: announce@apache.org, dev@shindig.apache.org
Subject: [ANN] Apache Shindig X.Y Released

The Apache Shindig team is proud to announce the release
of Apache Shindig, version X.Y-incubating.

Apache Shindig is a JavaScript container and
implementations of the backend APIs and proxy required for hosting
OpenSocial applications.

http://shindig.apache.org/

Enjoy,

-The Apache Shindig Team

9. Celebrate :o)

10. Notes

Maven Configuration

In order to publish the release artifacts to the Apache Maven servers you need to configure your Maven settings so Maven knows your Apache credentials. Follow the documentation here to configure Maven correctly.

PHP Prerequisites

The PHP version of Shindig has been moved to the attic, this is only kept here for legacy reasons. If you are a Java developer who is building a Shindig release chances are you do not have the necessary PHP dependencies installed on your machine. You will need to install and configure PHPUnit and mcrypt (as well as PHP) in order to run the PHP portion of the Shindig build. The links below are useful for Mac users, please add links for other OSes as people build on those platforms.

Mac