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
- 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: ThirdPartyDependencies
Making a release
- Check if documentation needs an update
- 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
- 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 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.
- Ensure you have set up standard Apache committer settings in ~/.m2/settings.xml : http://maven.apache.org/developers/committer-settings.html
- 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>
- If this is the first release in a series (i.e. relase X.Y.0):
- Prepare the release (actually, will prepare a Release Candidate)
mvn -Prelease,mahout_release release:prepare
- Perform the release (copies the release candidate to staging area)
mvn -Prelease,mahout_release release:perform
- *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. *
- NOTE: 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.
- 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 target
- In the middle frame, select Mahout and right click and choose Close. See http://maven.apache.org/developers/release/releasing.html for a picture
- Copy the "Repository URL" link to your email
- Ask others on mahout-dev to review the artifacts.
- 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.
- If the vote passes, then promote the artifacts in the Nexus Repository to the appropriate mirrors and repositories. TODO: Fill in more here
- 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.
- Wait 24 hours for release to propagate to mirrors.
- Deploy new Mahout site.
- Deploy new main Lucene site.
- 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
- 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:
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