Edgewall Software

Checklist of things to do for a release

The release steps are described on this page. For more information on the roadmap and schedule leading up to a release, see the RoadMap page.

Version identification

The major.minor.micro semantic versioning scheme is followed, with guidance from PEP:0440. However, since the major version is rarely incremented, we generally refer to a 1.x release a major release and a 1.x.y release a minor release.

In the event that a critical defect is discovered after a release is made, the micro version number should be incremented and a new minor release created. In the event that a packaging or distribution error results in the need to generate a new package name, a post-release identifier should be added, starting with post1. The post-release identifier is added by editing tag_build in setup.cfg.

For example, a filename cannot be reused when uploading to PyPI more than once, so a post-release is necessary in the event of a packaging or uploading error.

Preparing a minor release 1.x.y

2 weeks before

Announce a string freeze on Trac-dev, so that the translators can catch up with the latest changes.

Update the TracDev/ReleaseTesting page, ask for testers.

1 week before

Prepare the rc1 packages according to the procedure described below in Release steps, test and upload them.

Testing period. Only critical or no risk fixes.

Preparing a major release 1.x

Prepare a stabilization branch

That way, work can continue on trunk.

Things to adapt in the new stable branch:

1 month before

Announce a beta1 / string freeze on Trac-dev.

2 weeks before

Prepare the rc1 packages.

Testing period. Only critical or no risk fixes.

Release steps

Create a release coordination ticket with keyword release. The Clone button can be used on the previous release coordination ticket to populate the fields.

Check the t.e.o wiki

Check the source

Wiki related files

  • Verify that TracStandalone#Reference matches current tracd --help.
  • Update browser source TracLinks that point to t.e.o (e.g. trac:browser:branches/1.2-stable) to the latest stable release.
    $ grep --color -R -E "trac:(source|browser|repos):" trac/wiki/default-pages/ --exclude=TracChangeLog --exclude=TracLinks
  • Update RELEASE.rst from wiki TracChangeLog.
  • Sync the wiki.
    $ make update-help prefix=1.0  # 1.0-stable
    $ make update-help prefix=1.2  # 1.2-stable
    $ make update-help             # 1.4-stable
    $ make update-help prefix=1.5  # trunk (1.5dev)
  • Preview ReST using docutils.
    $ rst2html.py UPGRADE.rst > UPGRADE.html
    $ open UPGRADE.html
    $ rst2html.py INSTALL.rst > INSTALL.html
    $ open INSTALL.html

Other repository files

  • Run checks for valid Jinja2 and HTML syntax:
    $ make jinja jinjaopts=-q
  • Remove extraneous whitespace in Python source files using reindent. From the root of the repository:
    $ reindent -rn .
  • Import the translations from Transifex that have no committers.
    $ make tx-merge-{bs,cs,da,el,es_MX,et,fa,fi,gl,ko,pl,pt,ro,sq,uk,vi}
    $ make update-{bs,cs,da,el,es_MX,et,fa,fi,gl,ko,pl,pt,ro,sq,uk,vi}
    $ make {check,compile,stats,summary}-{bs,cs,da,el,es_MX,et,fa,fi,gl,ko,pl,pt,ro,sq,uk,vi}
  • Check the THANKS and AUTHORS files.
  • Check version number in setup.py and trac/__init__.py.
  • Check that the jQuery and jQuery UI version numbers mentioned in the help match the actual ones, see for example r11041.
  • Update copyright year:
    $ make update-copyright year=...
  • Check whether there are any eligible changesets that have not been merged into the branch.
  • Compile CoffeeScript files (Trac 1.3.2+): make coffee

Prepare packages


  • Use Python 2.7.9 or later on Windows.
  • Install Make on Windows. Choosing one of the following is recommended:
  • Install SSH on Windows.
    • PuTTY works well and can be installed by choco install putty.
  • Create a new virtual environment and install the release requirements:
    $ pip install -Ur requirements-release.txt

Verify installation on target platforms

  • Build source archive (tarball), wheel and Windows installers:
    $ make release
  • Smoke test:
    • Install directly from dist or run exe installer.
      $ pip install dist/Trac-*.whl
    • create an environment with trac-admin, test it with tracd.
    • upgrade an environment created with the previous release' trac-admin, test it with tracd.
    • Uninstall and repeat smoke test for sdist:
      $ pip uninstall Trac
      $ pip install dist/Trac-*.tar.gz

Create dist packages

  • Check out the release branch and prepare to tag:
    $ svn co --depth empty https://svn.edgewall.org/repos/trac/tags trac-tags
    $ cd trac-tags
    $ svn cp ^/branches/1.2-stable trac-1.2.3
    $ cd trac-1.2.3
  • Comment out tag_build setting in setup.cfg.
  • Commit the tag directory.
  • Build Windows exe installers on x86 and x64 (x86-64) platforms. The installer should be built using python for the specified architecture.
    > make release
  • Upload to https://ftp.edgewall.org/pub/trac.
    $ make upload version=...

Publish packages

SSH to the edgewall server and run script that copies the files, creates links and publishes to PyPI:

$ VER=...  # Example: VER=1.3.3
$ cd /var/ftp/pub/trac
# For 1.0-stable release
$ sudo ./make-release.sh $VER 1.0
# For 1.2-stable release
$ sudo ./make-release.sh $VER 1.2
# For 1.4-stable release (the latest stable)
$ sudo ./make-release.sh $VER
# For 1.5dev release
$ sudo ./make-release.sh $VER dev

Finalize the release

  • Close release coordination ticket. (*)
  • Mark the finished milestones as completed (with the completed date preferably being the date that the releases were announced), and change their descriptions from next maintenance/development release to latest maintenance/development release.
    • The next set of milestones should have their descriptions changed to next maintenance/development release.
    • The previous set of milestones should have their descriptions changed to remove the latest maintenance/development release message.
    • Attach copy of translations statistics chart of Transifex to the milestones.
    A Version will be automatically created (milestone_to_version.py is installed).
  • Upgrade the demo sites.

Announce the release

  • Post to the following channels:
  • Update the version displayed in the #trac IRC channel entry message (*)
    /msg ChanServ topic #trac "The topic is: https://trac.edgewall.org/ | https://trac-hacks.org/ | Latest version - <version>."
  • Update the Wikipedia page, and in particular the version numbers.

Prepare for development

(*) not for beta or rc releases

See also: ReleaseTesting, RoadMap, TracDev

Last modified 8 weeks ago Last modified on Feb 12, 2020, 6:51:41 AM
Note: See TracWiki for help on using the wiki.