Apache Tomcat Release Process
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.
- A git client installed and on your path
- Apache Ant installed and on your path (see BUILDING.txt in the root of the code repository 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)
- Check that the version numbers have been incremented after the previous release, as expected. (e.g. https://github.com/apache/tomcat/commit/9f1c4aae1ea29624aa70c10ca188083253f6f2d0#diff-d05193a10baf9408128c699650245e52)
- Check that the changelog file mentions your login name as release manager for this release (e.g. "Tomcat 7.0.94 (markt)").
- Check whether the
KEYSfile differs from
https://dist.apache.org/repos/dist/release/tomcat/tomcat-7/KEYSone. The latter one will be replaced after you do a release. Check that the
KEYSfile contains your public key.
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.
- Perform an git clone and switch to the correct branch
- git clone https://github.com/apache/tomcat /c/releases/asf-tomcat
- cd /c/releases/asf-tomcat
- git checkout 7.0.x
- git pull
- Edit build.properties and change the line
- Edit webapps\docs\changelog.xml and remove rtext="in development" from the latest version
- Commit these changes
- git commit -a -m "Tag 7.0.94"
- git tag 7.0.94
- git push origin 7.0.94
- Check the diff mailed to the dev list
I found it simplest to keep this clone for tagging to ensure no other edits found their way into the tag.
Build the release
- mkdir /c/releases/TOMCAT_7_0_94
- git archive 7.0.94 | tar -x -C /c/releases/TOMCAT_7_0_94/
I'm using Git Bash for the above. Adjust as necessary for you choice of tools.
- Add a build.properties file with the following configuration (adjust paths for your environment)
- GPG should be configured to use your Apache code signing key by default
- I always ensured
c:/temp/libswas 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://github.com/apache/tomcat/blob/7.0.x/res/maven/README.txt steps 1 to 3 (not step 4!)
Call a vote
- E.g. http://markmail.org/message/gvmbwocspnwb2dfe
- Increment the version number ready for the next tag (e.g. http://svn.apache.org/viewvc?view=revision&revision=1500094)
If the vote passes
and update the
KEYSfile 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://github.com/apache/tomcat/blob/7.0.x/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 email@example.com, cc firstname.lastname@example.org, email@example.com, firstname.lastname@example.org
- Update the release date in the changelog to the date the files were copied to the the release area in yyyy-mm-dd format.
E.g. "released 2013-05-03" (for stable versions), "beta, 2007-02-08" (for betas).
- Add the version number in Bugzilla (https://bz.apache.org/bugzilla/ → Administration → Products / versions)
- Drop the artifacts for the previous release from https://dist.apache.org/repos/dist/release/tomcat/tomcat-7/
- Add release data (version and date) to reporter.apache.org - https://reporter.apache.org/addrelease.html?tomcat
If the vote does not pass
- Update the release date in the changelog to "not released"
- Drop the artifacts from https://dist.apache.org/repos/dist/dev/tomcat/tomcat-7/
- Drop the maven artifacts from the staged maven repository