-
Notifications
You must be signed in to change notification settings - Fork 361
HowToRelease
Some developer notes on how to do a release. These instuctions are
intended for a new major or minor version. For a micro version some
instructions must be ignored or adapted. Replace vX.Y.Z
with the
appropriate version number.
-
Search for all TODOs, FIXMEs, and XXXs in the code to make sure that nothing important slips in.
-
Do a run of pydocchecker to fix the type annotations.
-
Send a call for translations when strings are stable, like http://www.freelists.org/post/contestms/Call-for-translations
-
Test manually all those parts that are not tested automatically and don't appear often in the development workflow, including the following.
- RPC from AWS (e.g., submission queue).
- RS and resource page (graphs, ability to kill and autorestart service, and set not to autorestart).
- Notification (web & desktop) in AWS and CWS for questions, announcements, ...
- Datasets operations (make live, score comparison, automessaging).
- Auto update of scores in CWS.
- CWS localization.
- Everything about RWS.
- Running AWS/CWS/RWS on non-base URLs.
- User tests.
- Tokens.
- Analysis mode, unofficial submissions.
- IP autologin.
-
Checkout the master branch (or the vX.Y branch if this is not the first release for vX.Y):
git checkout master
-
Update the version number in the source files (there's one occurrence in
cms/__init__.py
and one indocs/conf.py
) and commit these changes with a message like:Version X.Y.Z https://github.com/cms-dev/cms/wiki/CMS-X.Y.Z-RELEASE-NOTES
-
Create a new page in the wiki containing the release notes, copying the structure from a previous release (changing the date and the link to what will be the package URL), and update the history page to link to that page.
-
Create a branch for the new version (without the micro):
git branch vX.Y
-
Push both the
master
(if this is the first release for vX.Y) and thevX.Y
branches:git push origin master vX.Y
-
Open https://github.com/cms-dev/cms/releases, click on "Draft a new release", insert
vX.Y.Z
as tag version and select thevX.Y
branch as target. Leave the release title blank, and copy the release notes (apart from the first two lines with date and link). Manually create a .tar.gz archive with the sources and attach it (this is needed because the archive autogenerated by GitHub will not include isolate since it's a git submodule, thus be sure to make the archive with a clean and complete checkout). That is:git clone https://github.com/cms-dev/cms.git cd cms git checkout vX.Y git submodule update --init rm -rf .git .gitmodules isolate/.git cd .. tar zcf vX.Y.Z.tar.gz cms
Publish the release.
-
Wait for the new branch (the branch, not the tag, that is vX.Y) to pop up in the ReadTheDocs control panel (it takes a bit for RTD to realize that a new branch has been pushed; I did not find any way to force it). Go to Admin, Version; activate the version vX.Y and declare it the stable version.
-
Check that all the relevant automatic links have been created by GitHub, so that there are no 404 errors around (in the wiki and in the docs). Also check that the documentation has been compiled correctly.
-
Push the new version numbers for the stable and the development versions on cms-dev.github.io (for the stable version, update also the URLs of the links).
-
Send the release notes to the mailing list copying the text version from the wiki (for reference: http://www.freelists.org/post/contestms/CMS-100-RELEASE-NOTES).
-
Set the version numbers in the source files to the next version (there's one occurrence in
cms/__init__.py
and two indocs/conf.py
, and remember to append adev
!) -
Close the milestone on GitHub.
-
It is now a good time to do all those things that should be done at the beginning of the release: upgrade the python dependencies (e.g., to the versions in the most recent Ubuntu LTS), merge large PRs, ...