Edgewall Software

Version 122 (modified by Ryan J Ollos, 6 years ago) ( diff )

Use more relevant term.

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

Check the t.e.o wiki

Check the source

Wiki related files

Other repository files

Prepare packages

Prerequisites

  • Use Python 2.7.9 or later on Windows.
  • Create a new virtual environment and install the release requirements:
    $ pip install -Ur requirements-release.txt
    

Create dist packages

  • Check out the release branch.
  • Build source archive (tarball) and wheel on Unix:
    $ make release
    
  • Build Windows exe installers on x86 and x64 (x86-64) platforms. The installer should be built using python for the specified architecture.
    > make release
    

Verify installation on target platforms

  • Install in a new virtual environment.
  • 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

  • Upload the packages to PyPi (*).
    $ twine upload dist/*
    
  • Upload to https://ftp.edgewall.org/pub/trac.
    • Upload to dist in your home directory using make upload version=...
    • Move the files to /var/ftp/pub/trac
    • Run update_latest.sh in /var/ftp/pub/trac.
      • For older stable release: ./update_latest.sh <version> 1.0
      • For latest stable release: ./update_latests.sh <version>
      • For dev release: ./update_latest.sh <version> dev

Finalize the release

  • Test easy_install Trac.
  • Tag/copy version in subversion.
  • 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

  • Uncomment tag_build setting in setup.cfg.
  • Update version number in setup.py and trac/__init__.py.
  • Create a release coordination ticket with keyword release. The Clone button can be used on the previous release coordination ticket to pre-populate the fields.
  • For major releases, update the RoadMap and add a report Active Tickets for 1.x (e.g. {42}).

(*) not for beta or rc releases


See also: ReleaseTesting, RoadMap, TracDev

Note: See TracWiki for help on using the wiki.