= Checklist of things to do before a release == 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 [#Releasesteps 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 [source:trunk/trac/wiki/default-pages trac/wiki/default-pages] matches the list of pages in TracProject/DefaultWikiPages * [TracProject/DefaultWikiPages#sync Sync] the wiki * Update [source:trunk/RELEASE RELEASE] from wiki TracChangeLog * Sync [source:trunk/INSTALL INSTALL] from wiki TracInstall using [browser:/trunk/contrib/wiki2rst.py contrib/wiki2rst.py] {{{#!sh $ ./contrib/wiki2rst.py TracInstall > INSTALL }}} * Sync [source:trunk/UPGRADE UPGRADE] from wiki TracUpgrade using [browser:/trunk/contrib/wiki2rst.py contrib/wiki2rst.py] {{{#!sh $ ./contrib/wiki2rst.py TracUpgrade > UPGRADE }}} ==== Other repository files * Remove extraneous whitespace in python source files using [pypi:reindent] * Import the translations from Transifex [wiki:TracL10N/Transifex#group3 that have no committers] * Check the [source:trunk/THANKS THANKS] and [source:trunk/AUTHORS AUTHORS] files * Check version number in [source:trunk/setup.py setup.py], [source:trunk/trac/wiki/default-pages/WikiStart trac/wiki/default-pages/WikiStart], and [source:trunk/trac/__init__.py trac/__init__.py] * Check whether 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 [source:trunk/setup.cfg setup.cfg] * Update copyright year on [browser:/trunk/trac/templates/about.html@13499:46#L23 about] page and [source:trunk/COPYING COPYING] file * Check whether there are any eligible changesets that have not been merged into the branch === Create dist packages // Note: be sure to use Python **2.7.9** or later on Windows // * Check out trunk (or the release branch) to a '''clean''' sandbox * Build source archives on Unix: {{{#!sh python setup.py sdist --formats=gztar,zip }}} in order to get the files in `.tar.gz` and `zip` archives, with the proper LF line endings. **The `sdist` command must be performed from a svn < 1.7 checkout**, as only the data files listed in the `.svn/entries` files are considered (that is, until [https://bitbucket.org/tarek/distribute/issue/252 distribute issue252] gets fixed). If svn >= 1.7 is used, then [https://pypi.python.org/pypi/setuptools_subversion setuptools_subversion] must be installed. * Build Windows exe installers on x86 and x64 platforms. **Babel must be installed** in the environment used to build the installers. {{{#!dos python.exe setup.py bdist_wininst }}} * Test 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` === Finalize the release * Tag/copy version in subversion * 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 [/admin/ticket/versions Version] entries for the new releases (*) * Upload to http://ftp.edgewall.org/pub/trac * Update TracDownload and [wiki:TracDev/ReleaseNotes/1.1#DevelopmentReleases] * //[https://packaging.python.org/en/latest/distributing.html#uploading-your-project-to-pypi Upload] the packages to [http://pypi.python.org/pypi/Trac PyPi] using Twine (*)// * Test `easy_install Trac` * Post to the following channels: * [gforum:trac-users], [gforum:trac-dev] (all releases) * [gforum:trac-announce], [https://twitter.com/TracProject #TracProject], [gforum:comp.lang.python.announce python-announce] * 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 - ." }}} * Update the versions on the [wikipedia:trac Wikipedia] page. //(*) not for beta or rc releases// === Prepare for development * Uncomment `tag_build` setting in [source:trunk/setup.cfg setup.cfg] * Update version number in [source:trunk/setup.py setup.py], [source:trunk/trac/wiki/default-pages/WikiStart trac/wiki/default-pages/WikiStart], and [source:trunk/trac/__init__.py trac/__init__.py] * Create a new [TracDev/ApiChanges ApiChanges] page by copying the HEAD revision of the !ApiChanges page of the previous milestone (e.g. [wiki:TracDev/ApiChanges/1.1.3@16] -> [wiki:TracDev/ApiChanges/1.1.4@1]). * Create a release coordination ticket with keyword [kwquery:release]. * Update the [ReleaseTesting#Currenttargetreleases Current target releases]. ---- See also: ReleaseTesting, RoadMap, TracDev