Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Moved environmental setup to a separate page.

...

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 9 as an example but the same process applies to later versions as well.

Pre-requisites

  • 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
  • Operating system
    • Windows just works
    • Linux also requires Wine (standard package manager version should be fine)
    • MacOS also requires Wine (see below)
  • GnuPG installed
  • A public key that is part of the Apache web of trust
  • A reasonable internet connection (you will need to upload ~100MB)

The above can be accomplished on a Windows 10 Virtual Machine from Microsoft's Edge Development resources. Download + unpack the archive for your VM software and launch the VM. Login, open a PowerShell.exe window as Administrator, and installed Chocolatey:

PS C:\Users\IEUser> Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Once Chocolatey is installed, you can install all the above prerequisites at once:

PS C:\Users\ISUser> choco install git svn adoptopenjdk11 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 quit PowerShell and launch a new CMD.EXE or PowerShell window, of course (wink)

wine on MacOS

12.x (Monterey), 13.x (Ventura), and 14.x (Sonoma)

  • Install homebrew if you haven't already.
  • Install Wine 9.0 using brew install --no-quarantine wine-stable (ref)
  • If you are using an Apple Silicon-based Mac, you will need to /usr/sbin/softwareupdate --install-rosetta --agree-to-license (ref) to be able to run the NSIS installer-generator.

11.x.x (Big Sur) - old instructions

Install homebrew if you haven't already.

Install wine-crossover from https://github.com/Gcenx/homebrew-wine

Configure a 32-bit wine environment using:

WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg

Then before you start the release ensure the following environment variables are set:

...

Please ensure that you have an environment that is set up properly for a release build, plus that you are using the latest versions of toolchain components (specifically, the JDK and ant).

Preliminary checks

  • Check that the version numbers have been incremented after the previous release, as expected. (e.g. https://github.com/apache/tomcat/commit/cec14f9c33af9da271c9681bf6b343c61b6d055a)
  • Check that the changelog file mentions your login name as release manager for this release (e.g. "Tomcat 9.0.94 (markt)").
  • Check whether the KEYS file differs from https://dist.apache.org/repos/dist/release/tomcat/tomcat-9/KEYS one. The latter one will be replaced after you do a release. Check that the KEYS file contains your public key.
  • Check that the full build still works (ant release, preferably). Check that Buildbot builds (https://tomcat.apache.org/ci.html#Buildbot) are green.
  • Prepare your build environment:
    • Add a build.properties file (or, better yet, keep this file in your ~/build.properties if you have a dedicated build machine) 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
      #base.path=~/tomcat-libs
      # Enable the following if the DigiCert ONE magic is all set up, including ~/.digicertone/pkcs11properties.cfg
      codesigning.storepass=apikey|keystorepath|keystorepassword
      do.codesigning=true
      
      


...