Contents
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
- Update the TracChangeLog page.
- Review TracDev/ReleaseNotes page.
- Add Release Notes for any missing entries.
- Changes that don't affect users/admin or developers should be described in the Internal Changes field.
- For major releases:
- Verify TracInstall and TracUpgrade.
- Review TracDev/ApiChanges.
- Create a ReleaseNotes page.
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 (setup.cfg since 1.5.3) and trac/__init__.py.
- Check that the jQuery and jQuery UI version numbers mentioned in the help match the actual ones, see for example r16094. The versions should also match those in JavaScript.
- 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
- Install Make on Windows. Choosing one of the following is recommended:
- make-x.y.z-with-guile-win32-bin.zip from ezwinports
choco install make
if using Chocolatey
- Install SSH on Windows.
- PuTTY works well and can be
installed by
choco install putty
.
- PuTTY works well and can be
installed by
- 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) and wheel:
$ make release
- Smoke test:
- Install directly from
dist
.$ pip install dist/Trac-*.whl
- create an environment with
trac-admin
, test it withtracd
. - upgrade an environment created with the previous release's
trac-admin
, test it withtracd
. - Uninstall and repeat smoke test for
sdist
:$ pip uninstall Trac $ pip install dist/Trac-*.tar.gz
- Install directly from
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.6-stable trac-1.6.1 $ cd trac-1.6.1
- Delete the
tag_build
section at the top of setup.cfg. - Commit the tag directory.
- 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.6.1 $ cd /var/ftp/pub/trac # For 1.6-stable release (the latest stable) $ sudo ./make-release.sh $VER 1.6 # For 1.7dev 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.
- Upgrade the demo sites.
Announce the release
- Post to the following channels:
- trac-users, trac-dev (all releases)
- trac-announce, python-announce (
python-announce-list@python.org
)
- Update the Stable Release or Preview Release version numbers on the Wikipedia page, as appropriate.
- Click on the Pencil icon to navigate to the wikidata page.
- Select Add Value at the bottom of the software version identifier table and add a new entry.
- Follow the pattern for existing entries, adding version type, publication date, and references.
- Set the Rank to preferred. The Rank is the up/circle/down icon to the left of the input box for the version identifier.
- Set the Rank for the older version to normal.
- Check whether the ReadTheDocs reference is up to date: Short URLs must point to latest versions.
Prepare for development
- Add a TicketQuery progress bar for the next version on the TracDev/ReleaseNotes page, in the #Overview section (example).
- Update version number in setup.py and trac/__init__.py.
(*) not for beta or rc releases
See also: ReleaseTesting, RoadMap, TracDev