You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Apache Tomcat Release Process

Introduction

This is written primarily for Apache Tomcat release managers although it may also be of interest to anyone looking to validate and/or replicate the release process. This page uses Tomcat 7 as an example but the same process applies to later versions as well. Note that earlier versions have a slightly different, more complex release process.

Pre-requisites

  • A subversion client installed and on your path
  • Apache Ant installed and on your path (see BUILDING.txt in the root of the svn repo for version requirements)
  • The latest release of the minimum Java version that the Tomcat version runs on installed and on your path
  • Windows OS (you can do it on Linux but it involves a lot more hassle)
  • GnuPG installed
  • A public key that is part of the Apache web of trust
  • A reasonable internet connection (you will need to upload ~100MB)

Preliminary checks

Create the tag

The aim is to create a copy of the current trunk but without the "-dev" appended to the end of the version number.

I found it simplest to keep this checkout with the modified build.properties.default and just do an svn up prior to each tag. I only used the checkout for tagging to ensure no other edits found their way into the tag.

Build the release

execute.validate=true

execute.test.bio=true
execute.test.nio=true
execute.test.apr=true

test.haltonfailure=true

gpg.exec=C:/Program Files (x86)/GNU/GnuPG/gpg2.exe

base.path=C:/temp/libs

# Tomcat 7 currently requires both JDK 6 and JDK 7 to build a release
# JAVA_HOME system property used by Ant has to point to JDK 6 and this points to JDK 7
java.7.home=C:/Program Files (x86)/Java/jdk1.7.0_45
  • ant release

Notes:

  • GPG should be configured to use your Apache code signing key by default
  • I always ensured c:/temp/libs was empty so that the build had to download all the dependencies

Upload the release

Upload the contents of TOMCAT_7_0_XX/output/release to https://dist.apache.org/repos/dist/dev/tomcat/tomcat-7/

Generate the Maven artifacts

See https://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/res/maven/README.txt steps 1 to 3 (not step 4!)

Call a vote

If the vote passes

  •  svn mv https://dist.apache.org/repos/dist/dev/tomcat/tomcat-7/v7.0.XX https://dist.apache.org/repos/dist/release/tomcat/tomcat-7/v7.0.XX
  •  svn checkout --depth immediates https://dist.apache.org/repos/dist/release/tomcat/tomcat-7/ 
    and update the KEYS file there to be the same as the one used for release. (The download page has links pointing to this file).
  • Release the Maven artifacts (https://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/res/maven/README.txt step 4)
  • Wait for the mirrors to sync (upto 24 hours depending on what percentage of the mirrors you want to sync)
  • Update the website (e.g. http://svn.apache.org/viewvc?view=revision&revision=1500109)
    Note: the index and oldnews pages are sorted by date. Thus the new announcement pops up to the top of the page.
  • Update the docs (see http://svn.apache.org/repos/asf/tomcat/site/trunk/README.txt)
  • Announce the release (e.g. http://markmail.org/message/xyantb3ozzmucdjt) to users@t.a.o, cc dev@t.a.o, announce@t.a.o, announce@a.o
  • Update the release date in the changelog to the date the files were copied to the the release area in yyyy-dd-mm format.
    E.g. "released 2013-05-03" (for stable versions), "beta, 2007-02-08" (for betas).
  • Add the version number in Bugzilla

If the vote does not pass

  • No labels