mahout-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [CONF] Apache Mahout > How To Release
Date Tue, 26 Oct 2010 12:02:00 GMT
Space: Apache Mahout (
Page: How To Release (

Change Comment:
Fix details of maven release process.

Edited by Benson Margulies:
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

h1. Release Planning

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

 * Any [unresolved Jira issues with the upcoming version number listed as the "Fix Version"
 * Any ["Fixed" Jira issues missing a "Fix Version" |]
that should be updated to indicate that there were fixed in this upcoming version?
 * Does any documentation needs an updated?
 * Who is going to be the "release engineer"?
 * What day should be targeted for the release ?  (leave buffer time for a code freeze and
release candidate testing; make sure at least a few people commit to having time to help test
the release candidates around the target date.)

h1. 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

h1. Steps For Release Engineer

h2. Before building release
 # Check that all tests pass after a clean compile: mvn clean test
 # Double Check that there are no remaining unresolved Jira issues with the upcoming version
number listed as the "Fix" version
 # Double Check that there are no ["Fixed" Jira issues missing a "Fix Version" |]
that should be marked as fixed in this release.
 # Publish any prev. unpublished Third Party Deps: [Thirdparty Dependencies]

h2. Making a release
 # Check if documentation needs an update
 # Update news in {{src/site/new_website/index.html}}
 # 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.
 # If this is your first release, add your key to the KEYS file. The KEYS file is located
in Subversion at and copy it to the release
directory. Make sure you commit your change.  See
 # Ensure you have set up standard Apache committer settings in
 ~/.m2/settings.xml as per [this page|].
 # Add a profile to your ~/.m2/settings.xml in the <profiles> section with:
        <gpg.keyname>YOUR PGP KEY NAME</gpg.keyname>
        <gpg.passphrase>YOUR SIGNING PASSCODE HERE</gpg.passphrase>
 # Set environment variable MAVEN_OPTS to -Xmx1024m to ensure the tests can run
 # Create the release candidate:
    {{mvn -Peverything release:prepare release:perform}}

      If you have problems authenticating to, try adding to the command line
{{-Dusername=[user] -Dpassword=[password]}}
      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. You may also have to
rollback the version numbers in the POM files*
    # Review the artifacts, etc. on the Apache Repository (using Sonatype's Nexus application)
       You will need to login using your ASF SVN credentials and then browse to the staging
    # 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.
       ## Login into Nexus
       ## Click the Repositories link in the left hand menu
       ## Click the "User Managed Repositories" in the navbar just below the "Welcome" tab
       ## Choose "Nexus Managed Repositories" instead of "User Managed"
       ## Find and click the Mahout staged one that was just uploaded by the release:perform
       ## In the middle frame, select Mahout and right click and choose Close.  See
for a picture
       ## Copy the "Repository URL" link to your email
    # Ask others on mahout-dev to review the artifacts.
    # Call a VOTE on  Votes require 3 days before passing.  See Apache
[release policy|] for more info.
    # If the vote passes, then promote the artifacts in the Nexus Repository to the appropriate
mirrors and repositories.
    # If there's a problem, you need to unwind the release and start all over.
    mvn -Peverything versions:set -DnewVersion=PREVIOUS_SNAPSHOT
    mvn -Peverything versions:commit
    svn commit 
    svn rm
    # Copy the Assemblies (tar.gz, zip, tar.bz2) to the ASF mirrors at:
See [Guide To Distributing Existing Releases Through The ASF Mirrors|]
and the links that are there.
    # Wait 24 hours for release to propagate to mirrors.
    # Deploy new Mahout site.
    # Update Javadoc in {{}}.
           NOTE: skip this for now, as this javadoc is currently updated automatically from
the nightly build
    # 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.
    # Send announcements to the user and developer lists.

See also:

h2. Post Release
h3. Versioning
 * Create the next version in Jira (if it doesn't already exist)   
 * Mark the version as "released" in Jira (noting the release date)

h3. Documentation
 * Change wiki to match current best practices (remove/change deprecations, etc)

h3. Publicity
 * update freshmeat
 * !TheServerSide blurb
 * blog away
 * Update MLOSS entry:  See Grant for details.

h1. Related Resources


h1. :TODO: Things To Cleanup in this document

 * more specifics about things to test before starting or after packaging (RAT, run scripts
against example, etc...)
 * include info about [Voting |]

Change your notification preferences:

View raw message