Apache Lucene Mahout > index > How to release
Added by Karl Wettin, last edited by Grant Ingersoll on Nov 18, 2009  (view change)

This wiki page is under contruction, currently more or less a modified clone of the Solr HowToRelase page. More to come soon!

This page is prepared for Mahout committers. You need committer rights to create a new Mahout release.

Release Planning

Start a discussion on mahout-dev about having a release, questions to bring up include:

Code Freeze

For 7-14 days prior to the release target date, have a "code freeze" where committers agree to only commit things if they:

  • Are documentation improvements (including fixes to eliminate Javadoc warnings)
  • Are new test cases that improve test coverage
  • Are bug fixes found because of improved test coverage
  • Are new tests and bug fixes for new bugs encountered by manually testing

Steps For Release Engineer

Before building release

  1. Check that all tests pass after a clean compile: mvn clean test
  2. Double Check that there are no remaining unresolved Jira issues with the upcoming version number listed as the "Fix" version
  3. Double Check that there are no "Fixed" Jira issues missing a "Fix Version" that should be marked as fixed in this release.
  4. Publish any prev. unpublished Third Party Deps: ThirdPartyDependencies

Making a release

  1. Check if documentation needs an update
  2. Update news in src/site/src/documentation/content/xdocs/index.xml and for main lucene.apache.org site stored at https://svn.apache.org/repos/asf/lucene/site/. The second change may require additional rights or patch submitted to the Lucene PMC
  3. Commit these changes.
    '''Note:''' It is important to do this prior to the build so that it is reflected in the copy of the website included with the release for documentation purposes.
  4. If this is your first release, add your key to the KEYS file. The KEYS file is located in Subversion at https://svn.apache.org/repos/asf/lucene/mahout/trunk/KEYS and copy it to the release directory. Make sure you commit your change. See http://www.apache.org/dev/release-signing.html.
  5. Ensure you have set up standard Apache committer settings in ~/.m2/settings.xml : http://maven.apache.org/developers/committer-settings.html
  6. Add a profile to your ~/.m2/settings.xml in the <profiles> section with:

    <profile>
    <id>mahout_release</id>
    <properties>
    <gpg.keyname>YOUR PGP KEY NAME</gpg.keyname>
    <gpg.passphrase>YOUR SIGNING PASSCODE HERE</gpg.passphrase>
    <deploy.altRepository>mahout.releases::default:: https://repository.apache.org/service/local/staging/deploy/maven2/</deploy.altRepository>
    <username>USERNAME</username>
    <deploy.url> https://repository.apache.org/service/local/staging/deploy/maven2/</deploy.url>
    </properties>
    </profile>

    and in the <servers> section, add

    <server>
    <id>apache.releases.https</id>
    <username>ASF SVN username</username>
    <password>ASF SVN password</password>
    </server>

  7. If this is the first release in a series (i.e. relase X.Y.0):
  8. Prepare the release (actually, will prepare a Release Candidate)
    mvn -Prelease,mahout_release release:prepare
  9. Perform the release (copies the release candidate to staging area)
    mvn -Prelease,mahout_release release:perform
  10. *IF it screws up, do not clean or release:clean without first trying to do: release:rollback. This will likely save you time and do the right thing. If it doesn't work, then do clean and release:clean and also delete the tag from svn, if it was created. *
  11. NOTE: You may also have to rollback the version numbers in the POM files
  12. Review the artifacts, etc. on the Apache Repository (using Sonatype's Nexus application) site: https://repository.apache.org/.
    You will need to login using your ASF SVN credentials and then browse to the staging area.
  13. Once you have reviewed the artifacts, you will need to "Close" out the staging area under Nexus, which then makes the artifacts available for others to see.
    1. Login into Nexus
    2. Click the Repositories link in the left hand menu
    3. Click the "User Managed Repositories" in the navbar just below the "Welcome" tab
    4. Choose "Nexus Managed Repositories" instead of "User Managed"
    5. Find and click the Mahout staged one that was just uploaded by the release:perform target
    6. In the middle frame, select Mahout and right click and choose Close. See http://maven.apache.org/developers/release/releasing.html for a picture
    7. Copy the "Repository URL" link to your email
  14. Ask others on mahout-dev to review the artifacts.
  15. Call a VOTE on mahout-dev@ and CC general@lucene.apache.org. Votes require 3 days before passing. See Apache release policy for more info.
  16. If the vote passes, then promote the artifacts in the Nexus Repository to the appropriate mirrors and repositories. TODO: Fill in more here
  17. Copy the Assemblies (tar.gz, zip, tar.bz2) to the ASF mirrors at: people.apache.org:/www/www.apache.org/dist/lucene/mahout/. See Guide To Distributing Existing Releases Through The ASF Mirrors and the links that are there.
  18. Wait 24 hours for release to propagate to mirrors.
  19. Deploy new Mahout site.
  20. Deploy new main Lucene site.
  21. Update Javadoc in people.apache.org:/www/lucene.apache.org/mahout/docs/api.
    NOTE: skip this for now, as this javadoc is currently updated automatically from the nightly build
  22. Clean up JIRA: Bulk close all X.Y JIRA issues. Mark the Version number as being released (see Manage Versions.) Add the next version (X.Y+1) if necessary.
  23. Send announcements to the user and developer lists.

See also:

Post Release

Versioning

  • Create the next version in Jira (if it doesn't already exist)
  • Mark the version as "released" in Jira (noting the release date)

Documentation

  • Change wiki to match current best practices (remove/change deprecations, etc)

Publicity

  • update freshmeat
  • !TheServerSide blurb
  • blog away

Related Resources

:TODO: Things To Cleanup in this document

TODO

  • more info about the process (ie: stage the release candidate on people.apache.org, send email to mahout-dev seeking feedback, etc...)
  • more specifics about things to test before starting or after packaging (RAT, run scripts against example, etc...)
  • include info about Voting