Version 95 (modified by 9 years ago) ( diff ) | ,
---|
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 last 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
- Update the TracChangeLog page
- Verify TracInstall and TracUpgrade
- For major releases:
- check TracDev/ReleaseNotes, go through the tickets which have an empty Release Notes field and say a word there
- check TracDev/ApiChanges
Check the source
Wiki related files
- Verify that TracStandalone#Reference matches current
tracd --help
- Verify that trac/wiki/default-pages matches the list of pages in TracProject/DefaultWikiPages
- Sync the wiki
- Update RELEASE from wiki TracChangeLog
- Sync INSTALL from wiki TracInstall using contrib/wiki2rst.py
$ ./contrib/wiki2rst.py TracInstall > INSTALL
- Sync UPGRADE from wiki TracUpgrade using contrib/wiki2rst.py
$ ./contrib/wiki2rst.py TracUpgrade > UPGRADE
Other repository files
- Remove extraneous whitespace in python source files using reindent
- Import the translations from Transifex that have no committers
- Check the THANKS and AUTHORS files
- Check version number in setup.py, trac/wiki/default-pages/WikiStart, 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)
- Comment out
tag_build
setting in setup.cfg - Update copyright year on about page and COPYING file
- Check whether there are any eligible changesets that have not been merged into the branch
Prepare packages
Prerequisites
- 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 on Unix:
in order to get the files in
python setup.py sdist --formats=gztar,zip
.tar.gz
andzip
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 withtracd
- upgrade an environment created with the previous release'
trac-admin
, test it withtracd
- create an environment with
Upload packages
- Upload the packages to PyPi using Twine (*)
- Upload to http://ftp.edgewall.org/pub/trac
Finalize the release
- Test
easy_install Trac
- Tag/copy version in subversion
- Update TracDownload and TracDev/ReleaseNotes/1.1
- Close release coordination ticket (e.g. #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:
- trac-users, trac-dev (all releases)
- trac-announce, #TracProject, python-announce (
python-announce-list@python.org
)
- Update the version displayed in the #trac IRC channel entry message (*)
/msg ChanServ topic #trac "The topic is: http://trac.edgewall.org/ | http://trac-hacks.org/ | Latest version - <version>."
- Update the versions on the Wikipedia page.
Prepare for development
- Uncomment
tag_build
setting in setup.cfg - Update version number in setup.py, trac/wiki/default-pages/WikiStart, and trac/__init__.py
- Create a release coordination ticket with keyword release.
- Update the Current target releases.
(*) not for beta or rc releases
See also: ReleaseTesting, RoadMap, TracDev