This page is to help a Solr committer create a new release (you need committer rights for some of the steps to create an official release). It does not reflect official release policy - many of the items may be optional, or may be modified as necessary.
Contents
Release Prerequisites
Ant 1.7.1 or higher: http://ant.apache.org
A 4K bit RSA Key checked into the KEYS file: http://www.apache.org/dev/release-signing.html
Release Planning
Start a discussion on dev@ about having a release, questions to bring up...
- 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? Any necessary notes on upgrading for CHANGES.txt?
- 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.)
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 (and others helping)
Before building release
- Check that Solr works on the latest versions of Jetty, Tomcat, and Resin.
- 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.
- Make sure the Ant sign-artifacts target is in sync with all of the artifacts that are created. All released artifacts must be signed.
- Is your Key in the KEYS file?
Making a release
Run RAT (http://incubator.apache.org/rat/) on the source. ant rat-sources. See https://issues.apache.org/jira/browse/SOLR-762.
- Check if documentation needs an update, update release date in CHANGES.txt and add any necessary notes on upgrading.
Update news in src/site/src/documentation/content/xdocs/index.xml see Website_Update_HOWTO.
- 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 the first release in a series (i.e. relase X.Y.0):
- create a branch for the series:
svn copy https://svn.apache.org/repos/asf/lucene/dev/trunk \ https://svn.apache.org/repos/asf/lucene/dev/branches/branch-X.Y -m "Starting Solr X.Y branch."
Create a new distribution directory: people.apache.org:/www/www.apache.org/dist/lucene/solr/X.Y
- create a branch for the series:
Check out the branch with: svn co https://svn.apache.org/repos/asf/lucene/dev/branches/branch-X.Y \
Note: at the moment releases need to be done on a unix box or in a cygwin environment with unix linefeeds, because fixcrlf is only done on the sources in the zip artifact
- Update the version numbers in common-build.xml on the branch:
- specversion should be set to X.Y.M.${dateversion}, where X.Y.M is the release being made.
- version should be set to X.Y.N-SNAPSHOT, where N is one greater than the release being made.
- commit the changes to both trunk and branch
- On the branch, compile the code and run unit tests.
ant -Dversion=X.Y.M -Dspecversion=X.Y.M clean test
Regenerate the "site" docs per Website_Update_HOWTO so the documentation included with this release will reflect the correct version number (at the moment, this is specific to the tutorial)
- Commit the build.xml and documentation changes from the previous few steps.
Produce one or more release candidates using the steps outlined here, up to the point of actually tagging the release and distributing it. Ask on dev@ (cc general@lucene.apache.org ) for reviewers of the release candidates. When a consensus emerges, build the final release candidate and call a vote. 3 +1 Lucene PMC votes are technically needed for a release, although Solr considers all votes equally. (see voting).
ant -Dversion=X.Y.M -Dspecversion=X.Y.M prepare-release - note that if your OS username is not the same as your Apache username, you may need to add a --username param to the svn call in build.xml target build-site eg <arg value="--username"/> <arg value="markrmiller"/>
- Check that release tgz/zip files looks ok - e.g. uncompress them, run example, work through the steps of the tutorial, ensure that the javadocs are readable, etc...
- Upload dist/solr.tar to your public staging space on people.a.o.and send an email to dev@ calling the vote.
- Tag the release:
svn copy https://svn.apache.org/repos/asf/lucene/dev/branches/branch-X.Y \ https://svn.apache.org/repos/asf/lucene/dev/tags/release-X.Y.M -m "Solr X.Y.M release."
- Copy release files to the distribution directory.
scp -p dist/apache-solr-X.Y.M.tar.gz* people.apache.org:/www/www.apache.org/dist/lucene/solr/X.Y
scp -p dist/apache-solr-X.Y.M.zip* people.apache.org:/www/www.apache.org/dist/lucene/solr/X.Y
- Copy the Maven artifacts to the distribution directory (follow the existing directory structure), to have them pushed to the central Maven repositories:
cp -R package/maven/org/apache/solr /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/
- Ensure that the most current keys file is on the distribution site:
scp -p KEYS people.apache.org:/www/www.apache.org/dist/lucene/solr/
- Start a new section in CHANGES.txt
Wait 24 hours for release to propagate to mirrors. Check http://www.apache.org/dyn/closer.cgi/lucene/solr/
Add the new release info to the doap.rdf file, and double check for any other updates that should be made to the doap file as well if it hasn't been updated in a while. (Note: this file is used to power Solr's Listing on http://projects.apache.org/ as well as the Recent Apache Releases RSS feed)
Deploy new Solr site: Website_Update_HOWTO
Update news for main lucene.apache.org site stored at https://svn.apache.org/repos/asf/lucene/site/. This change may require additional rights or patch submitted to the Lucene PMC - see http://wiki.apache.org/lucene-java/TopLevelProject#Updating_the_Website
Deploy new main Lucene site. (You will need to be a PMC member to do this: http://wiki.apache.org/lucene-java/TopLevelProject#Updating_the_Website)
Update Javadoc in people.apache.org:/www/lucene.apache.org/solr/docs/api.
- NOTE: skip this for now, as this javadoc is currently updated automatically from the nightly build
Send announcements to the announce@apache.org, solr-user@, dev@, and general@ lucene mailing lists. See the Sample Announcement below.
Post Release
- Housekeeping
- Mark the version as "released" in Jira (noting the release date)
- Create the next version in Jira (if it doesn't already exist)
- Go to JIRA and find all issues that were fixed in the release you just made, whose Status is Resolved, and do a bulk change to close all of these issues. Uncheck the box that says "send an email for these changes".
- Let dev@ know the trunk is now open for commits
- Publicity
- update freshmeat (Yonik owns the project on Freshmeat, he may need to do this one)
TheServerSide blurb (http://www.theserverside.com/news/post.tss)
- blog away
- Documentation
- Change wiki to match current best practices (remove/change deprecations, etc)
Sample Announcement
Apache Solr 1.4 has been released and is now available for public download! http://www.apache.org/dyn/closer.cgi/lucene/solr/ Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project. Its major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, and rich document (e.g., Word, PDF) handling. Solr is highly scalable, providing distributed search and index replication, and it powers the search and navigation features of many of the world's largest internet sites. Solr is written in Java and runs as a standalone full-text search server within a servlet container such as Tomcat. Solr uses the Lucene Java search library at its core for full-text indexing and search, and has REST-like HTTP/XML and JSON APIs that make it easy to use from virtually any programming language. Solr's powerful external configuration allows it to be tailored to almost any type of application without Java coding, and it has an extensive plugin architecture when more advanced customization is required. New Solr 1.4 features include - Major performance enhancements in indexing, searching, and faceting - Revamped all-Java index replication that's simple to configure and can replicate config files - Greatly improved database integration via the DataImportHandler - Rich document processing (Word, PDF, HTML) via Apache Tika - Dynamic search results clustering via Carrot2 - Multi-select faceting (support for multiple items in a single category to be selected) - Many powerful query enhancements, including ranges over arbitrary functions, and nested queries of different syntaxes - Many other plugins including Terms for auto-suggest, Statistics, TermVectors, Deduplication
Related Resources
see Step-By-Step Guide to Mirroring Releases for more information
:TODO: Things To Cleanup in this document
:TODO: