...
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 9 as an example but the same process applies to later versions as well.
...
PS C:\Users\ISUser> choco install git svn adoptopenjdk8 ant gnupg sed xsltproc
This command will run for a while, and ask you repeatedly if it's okay to run "chocolateyInstall.ps1", which you will have to do to proceed. Once the above command has completed, you have all the software prerequisites installed and on your PATH. Well, once you quick PowerShell and launch a new CMD.EXE or PowerShell window, of course
...
- Check that the version numbers have been incremented after the previous release, as expected. (e.g. https://github.com/apache/tomcat/commit/9f1c4aae1ea29624aa70c10ca188083253f6f2d0#diff-d05193a10baf9408128c699650245e52cec14f9c33af9da271c9681bf6b343c61b6d055a)
- Check that the changelog file mentions your login name as release manager for this release (e.g. "Tomcat 79.0.94 (markt)").
- Check whether the
KEYS
file differs fromhttps://dist.apache.org/repos/dist/release/tomcat/tomcat-79/KEYS
one. The latter one will be replaced after you do a release. Check that theKEYS
file contains your public key.
...
- Perform an git clone and switch to the correct branch
git clone https://github.com/apache/tomcat /c/releases/asf-tomcat
orgit clone -b 9.0.x git clone https://github.com/apache/tomcat /c/releases/asf-tomcat
cd /c/releases/asf-tomcat
git checkout
79.0.x
git pull
Edit "build.properties.default" and change the line version.suffix=-dev to version.suffix=
- This can be done with
sed -i.bak '/^version.suffix=/d' build.properties.default
- This can be done with
- Edit "webapps\/docs\/changelog.xml" and remove rtext="in development" from the latest version
- This can be done with
xsltproc --param asfid '[your asf id]' release.xsl webapps\docs\changelog.xml
where release.xsl can be found here.
- This can be done with
- Commit these changes
git commit -a -m "Tag
79.0.94"
git tag
79.0.94
git push origin
79.0.94
- Check the diff mailed to the dev list
- Reset to the 9.0.x branch
I found it simplest to keep this clone for tagging to ensure no other edits found their way into the tag.
...
- mkdir /c/releases/TOMCAT_79_0_94
- git archive 79.0.94 | tar -x -C /c/releases/TOMCAT_79_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)
No Format |
---|
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 #gpg.exec=/usr/bin/gpg 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#base.path=~/tomcat-libs |
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 contents of TOMCAT_79_0_XX/output/release
to https://dist.apache.org/repos/dist/dev/tomcat/tomcat-79/
Generate the Maven artifacts
See https://github.com/apache/tomcat/blob/79.0.x/res/maven/README.txt steps 1 to 3 for the release (not step 4 until the vote passes !)
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)
...
No Format svn mv https://dist.apache.org/repos/dist/dev/tomcat/tomcat-79/v7v9.0.XX https://dist.apache.org/repos/dist/release/tomcat/tomcat-79/v7v9.0.XX
No Format svn checkout --depth immediates https://dist.apache.org/repos/dist/release/tomcat/tomcat-79/
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://github.com/apache/tomcat/blob/79.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 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-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-79/
- Add release data (version and date) to reporter.apache.org - https://reporter.apache.org/addrelease.html?tomcat
...
- Update the release date in the changelog to "not released"
- Drop the artifacts from https://dist.apache.org/repos/dist/dev/tomcat/tomcat-79/
- Drop the maven artifacts from the staged maven repository