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.

Release Prerequisites

Release Planning

Start a discussion on dev@ about having a release, questions to bring up...

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:

Steps For Release Engineer (and others helping)

Before building release

  1. Check that Solr works on the latest versions of Jetty, Tomcat, and Resin.
  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. Make sure the Ant sign-artifacts target is in sync with all of the artifacts that are created. All released artifacts must be signed.
  5. Is your Key in the KEYS file?

Making a release

  1. Run RAT (http://incubator.apache.org/rat/) on the source. ant rat-sources. See https://issues.apache.org/jira/browse/SOLR-762.

  2. Check if documentation needs an update, update release date in CHANGES.txt and add any necessary notes on upgrading.
  3. Update news in src/site/src/documentation/content/xdocs/index.xml see Website_Update_HOWTO.

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

  5. If this is the first release in a series (i.e. relase X.Y.0):
    1. 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."
    2. Create a new distribution directory: people.apache.org:/www/www.apache.org/dist/lucene/solr/X.Y

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

  7. 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.
  8. commit the changes to both trunk and branch
  9. On the branch, compile the code and run unit tests.
    • ant -Dversion=X.Y.M -Dspecversion=X.Y.M clean test

  10. 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)

  11. Commit the build.xml and documentation changes from the previous few steps.
  12. 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.
  13. 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."
  14. Copy release files to the distribution directory.
    1. scp -p dist/apache-solr-X.Y.M.tar.gz* people.apache.org:/www/www.apache.org/dist/lucene/solr/X.Y

    2. scp -p dist/apache-solr-X.Y.M.zip* people.apache.org:/www/www.apache.org/dist/lucene/solr/X.Y

  15. 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/
  16. 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/

  17. Start a new section in CHANGES.txt
  18. Wait 24 hours for release to propagate to mirrors. Check http://www.apache.org/dyn/closer.cgi/lucene/solr/

  19. 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)

  20. Deploy new Solr site: Website_Update_HOWTO

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

  22. 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)

  23. 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
  24. Send announcements to the announce@apache.org, solr-user@, dev@, and general@ lucene mailing lists. See the Sample Announcement below.

Post Release

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

:TODO: Things To Cleanup in this document

/!\ :TODO: /!\

HowToReleaseSlowly (last edited 2011-06-14 22:40:31 by SteveRowe)