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 defect or packaging distribution error is discovered after a release is made, the micro version number should be incremented and a new minor release created.

A filename cannot be reused when uploading to PyPI more than once, so the micro version must be incremented 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.

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

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

Prerequisites

  • 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
    
  • Delete the tag_build section at the top of 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 for TracDownload 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 5 weeks ago Last modified on Jun 29, 2020, 3:24:22 AM
Note: See TracWiki for help on using the wiki.