Tika release process

Making a release

If you've done this before, have all programs installed, all necessary karma granted, and everything configured, steps 1 though 9 will take between 30 and 45 minutes (tests take a while to run). If you've never done this before, you will probably run into an issue not covered in this set of instructions. So, it will take longer (maybe a couple hours, maybe a couple days).

Either way, please update these instructions with any clarifications you think might help the next release manager.

  1. git clone https://git-wip-us.apache.org/repos/asf/tika.git release

  2. Update CHANGES.txt with release date (Release X.Y - MM/dd/yyyy) and (if needed) add additional changelog entries.
    1. On the Tika JIRA, create versions X.Y, X.(Y+1), and X.(Y+2), if not already done.
    2. Move any lingering unresolved issues from X.Y to X.(Y+1).
  3. git add CHANGES.txt && git commit -m "Update CHANGES.txt for X.Y release." && git push origin

  4. Run apache-rat:check and fix any missing license headers / add excluded for properly non-licensed fails

  5. setenv MAVEN_OPTS "-Xms128m -Xmx256m" (or export MAVEN_OPTS="-Xms128m -Xmx256m" if you are using bash)

  6. mvn release:prepare

    1. Make sure all the release numbers are set to X.Y (from X.Y-dev)
    2. When prompted, the scm tag name should be X.Y (version number). If this is a release candidate, the tag should be X.Y-rcN.
    3. Watch for a BUILD SUCCESSFUL message

    4. Make sure you have gnupg (or variant) installed (see http://www.apache.org/dev/openpgp.html)

  7. mvn release:perform

    1. Make sure you can log on to https://repository.apache.org/

    2. Make sure you have the following entry in your ~/.m2/settings.xml file: http://maven.apache.org/settings.html#Servers. The server ID should be apache.releases.https.

  8. Head over to https://repository.apache.org/ (Apache's Nexus Server)

    1. Login with your ASF username and password
    2. "Close" the staging repository with message Apache Tika X.Y release candidate #N.

    3. Copy the URL from the closed staged repository for Tika (you'll need this later)
  9. Update CHANGES.txt with a "Release X.Y + 1 - Current Development" section.
  10. Check the contents of target/checkout/target/X.Y/* into https://dist.apache.org/repos/dist/dev/tika/ (tika-X.Y-src.zip{.asc|.md5|.sha}, tika-app-X.Y.jar{.asc|.md5|.sha} and tika-server-X.Y.jar{.asc|.md5|.sha}, and CHANGES.txt.

    1. svn co https://dist.apache.org/repos/dist/dev/tika/ dist.dev.tika

    2. cd dist.dev.tika

    3. svn rm ./*

    4. cp ../release/target/checkout/target/X.Y/* .

    5. mv CHANGES.txt CHANGES-X.Y.txt

    6. svn add ./*

    7. svn commit -m "Add Tika X.Y RC#N artifacts."

  11. See the file in target/checkout/target/vote.txt - it contains the contents of the release email you should send (with subject [VOTE] Apache Tika X.Y Release Candidate N to dev@tika.apache.org and to user@tika.apache.org). Ensure all URLs are correct and update the email to include links to the artifacts from #8 (including .sha, .md5 and .asc and CHANGES.txt)

    • If the VOTE passes:
      1. Send [RESULT] [VOTE] tallying the VOTE to dev@tika.apache.org and user@tika.apache.org

      2. Head over to Nexus from #6 and "Release" the repository with message Apache Tika X.Y release (and make sure the box is checked to auto drop).
      3. svn rm https://dist.apache.org/repos/dist/release/tika/*

      4. svn mv https://dist.apache.org/repos/dist/dev/tika/* https://dist.apache.org/repos/dist/release/tika/

      5. git clone https://git-wip-us.apache.org/repos/asf/tika.git X.Y-rcN

      6. git tag X.Y && git push --tags

        • The * wildcard will not work.

    • Else:
      1. Drop the new Tika staging repository on repository.apache.org.
      2. Make an entry in CHANGES.txt which documents the subsequent changes between release candidates. This is extremely useful if the candidates are cut from trunk and trunk has moved on since the release candidate was originally cut.
      3. Go back to #1.
  12. Update the version of any unreleased modules (like tika-dotnet).
  13. Update Tika site.
    1. Update parent version number in the site pom.xml file.
    2. Update the Documentation section of site.xml. Make sure to add the collapse tag for the now old version.
    3. Update the formats page of version X.Y using TIKA-411.
    4. Update the version number in the dependency examples in the new X.Y gettingstarted.apt page
    5. Update the checksums on the download page.
    6. Update the DOAP file with the new release.
    7. Create a new formats and example page for the new version (but don't list it in the sidebar).
    8. Fill the X.Y index page with the change list and contributor list (using https://github.com/chrismattmann/apachestuff/blob/master/extract-tika-contribs and https://github.com/chrismattmann/apachestuff/blob/master/extract-tika-issues.py).

    9. Generate the Javadoc.
      1. cd trunk

      2. mvn javadoc:aggregate

      3. mv target/site/apidocs /tika/site/publish/X.Y/api

    10. Update tika-server documentation:
      1. rm -r /tika/site/src/resources/X.Y/miredot

      2. cp /tika/trunk/tika-server/target/miredot /tika/site/src/resources/X.Y

    11. Check everything looks good with mvn site:run.

    12. mvn clean install

    13. git add <any files changed for site> && git commit -m "Update website for X.Y release." && git push origin

  14. On the Tika JIRA, "release" version X.Y and update any (new) straggler X.Y issues to X.(Y+1).
  15. Send announcements to user@tika.apache.org, dev@tika.apache.org, and announce@apache.org lists (from your Apache email) - see http://s.apache.org/2hC for a sample.

  16. Log on to https://reporter.apache.org/addrelease.html?tika and add the release data (version and date) to the database

ReleaseProcess (last edited 2016-02-20 03:06:36 by ChrisMattmann)