Space: Apache Mahout (https://cwiki.apache.org/confluence/display/MAHOUT)
Page: How To Release 
(https://cwiki.apache.org/confluence/display/MAHOUT/How+To+Release)


Edited by Sean Owen:
---------------------------------------------------------------------
*This page is prepared for Mahout committers. You need committer rights to 
create a new Mahout release.*

h1. Release Planning

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

 * Any [Unresolved JIRA issues for the upcoming release | 
https://issues.apache.org/jira/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+MAHOUT+AND+resolution+%3D+Unresolved+AND+fixVersion+%3D+%220.6%22&runQuery=true&clear=true]
 * Any [Resolved or Closed JIRA issues missing a "Fix Version" | 
https://issues.apache.org/jira/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+MAHOUT+AND+%28status+%3D+Resolved+OR+status+%3D+Closed%29+AND+fixVersion+IS+NULL+AND+resolution+%3D+Fixed&runQuery=true&clear=true]
 that should be marked as fixed in this release?
 * Does any documentation need an update?
 * 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
 # Check that there are no remaining unresolved Jira issues with the upcoming 
version number listed as the "Fix" version
 # 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. 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 
https://svn.apache.org/repos/asf/mahout/trunk/distribution/KEYS and copy it to 
the release directory. Make sure you commit your change.  See 
http://www.apache.org/dev/release-signing.html.
 # Ensure you have set up standard Apache committer settings in
 ~/.m2/settings.xml as per [this 
page|http://maven.apache.org/developers/committer-settings.html].
 # Add a profile to your ~/.m2/settings.xml in the <profiles> section with:
 {code}
  <profiles>
    <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>
  </profiles>
{code}
 # Set environment variable MAVEN_OPTS to -Xmx1024m to ensure the tests can run
 # If you are outside the US, then svn.apache.org may not resolve to the main 
US-based Subversion servers. (Compare the IP address you get for svn.apache.org 
with svn.us.apache.org to see if they are different.) This will cause problems 
during the release since it will create a revision and then immediately access, 
but, there is a replication lag of perhaps a minute to the non-US servers. To 
temporarily force using the US-based server, edit your equivalent of /etc/hosts 
and map the IP address of svn.us.apache.org to svn.apache.org.
 # Create the release candidate: {{mvn -Pmahout_release release:prepare 
release:perform}}. If you have problems authenticating to svn.apache.org, 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) site: https://repository.apache.org/.
       You will need to login using your ASF SVN credentials and then browse to 
the staging area.
    # 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.
       ## Log in to Nexus
       ## Click the Staging Repositories link in the left hand menu
       ## Click the Mahout staged one that was just uploaded by the 
release:perform target
       ## Click Close in the toolbar. See 
https://docs.sonatype.org/display/Repository/Closing+a+Staging+Repository for a 
picture
       ## Copy the "Repository URL" link to your email; it should be like 
https://repository.apache.org/content/repositories/orgapachemahout-024/
    # Call a VOTE on [email protected].  Votes require 3 days before 
passing.  See Apache [release 
policy|http://www.apache.org/foundation/voting.html#ReleaseVotes] for more info.
    # If there's a problem, you need to unwind the release and start all over.
    {panel}
    mvn -Pmahout_release versions:set -DnewVersion=PREVIOUS_SNAPSHOT
    mvn -Pmahout_release versions:commit
    svn commit 
    svn rm https://svn.apache.org/repos/asf/mahout/tags/mahout-VERSION
    {panel}  
    # Release the artifact in the Nexus Repository in the same way you Closed 
it earlier.
    # Copy the assemblies and their supporting files (tar.gz, zip, tar.bz2, 
plus .asc, .md5, .pom, .sha1 files) to the ASF mirrors at: 
people.apache.org:/www/www.apache.org/dist/mahout/0.x. You should make sure the 
group "mahout" owns the files and that they are read only (-r--r--r-- in 
UNIX-speak). See [Guide To Distributing Existing Releases Through The ASF 
Mirrors|http://jakarta.apache.org/site/convert-to-mirror.html?Step-By-Step] and 
the links that are there.
    # Wait 24 hours for release to propagate to mirrors.
    # Deploy new Mahout site at people.apache.org:/www/mahout.apache.org
    # Update Javadoc in {{people.apache.org:/www/mahout.apache.org/docs/api}}.
           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:
 * http://maven.apache.org/developers/release/releasing.html
 * 
http://www.sonatype.com/books/nexus-book/reference/staging-sect-deployment.html
 * http://www.sonatype.com/books/nexus-book/reference/index.html

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: http://mloss.org/revision/view/387/.  See Grant for 
details.

h1. Related Resources

 * http://www.apache.org/dev/#releases
 * http://www.apache.org/dev/#mirror

h1. :TODO: Things To Cleanup in this document

*TODO*
 
 * more specifics about things to test before starting or after packaging (RAT, 
run scripts against example, etc...)
 * include info about [Voting | 
http://www.apache.org/foundation/voting.html#ReleaseVotes]


Change your notification preferences: 
https://cwiki.apache.org/confluence/users/viewnotifications.action    

Reply via email to