Edgewall Software

Version 104 (modified by Ryan J Ollos, 5 years ago) ( diff )

Add step for building wheel. Refs #12391.

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

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

Check the t.e.o wiki

Check the source

Wiki related files

Other repository files

Prepare packages


  • Use Python 2.7.9 or later on Windows.
  • Babel must be installed in the environment used to build the packages on Windows.
  • setuptools >= 0.8 should be used to ensure PEP-0440 compliant version identifiers.
  • If svn ≥ 1.7 is used for the checkout then setuptools_subversion must be installed.

Create dist packages

  • Check out trunk (or the release branch) to a clean sandbox.
  • Build source archives and wheel on Unix:
    $ python setup.py sdist --formats=gztar,zip
    $ python setup.py bdist_wheel
    to get the files in .tar.gz and zip archives, with the proper LF line endings.
  • Build Windows exe installers on x86 and x64 platforms:
    > python.exe setup.py bdist_wininst

Verify installation on target platforms

  • Install on a clean system. Remove any old Trac installation before testing.
  • Smoke test:
    • create an environment with trac-admin, test it with tracd
    • upgrade an environment created with the previous release' trac-admin, test it with tracd

Upload packages

Finalize the release

  • Test easy_install Trac.
  • Tag/copy version in subversion.
  • Update TracDownload.
  • Close release coordination ticket, eg #9077. (*)
  • 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.
  • Add Version entries for the new releases. (*)

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

Note: See TracWiki for help on using the wiki.