123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- Checklists for PuTTY administrative procedures
- ==============================================
- Preparing to make a release
- ---------------------------
- Now that PuTTY is in git, a lot of the release preparation can be done
- in advance, in local checkouts, and not pushed until the actual
- process of _releasing_ it.
- To begin with, before dropping the tag, make sure everything is ready
- for it:
- - First of all, go through the source (including the documentation),
- and the website, and review anything tagged with a comment
- containing the word XXX-REVIEW-BEFORE-RELEASE.
- (Any such comments should state clearly what needs to be done.)
- - Also, do some testing of the Windows version with Minefield, and
- of the Unix version with valgrind or efence or both. In
- particular, any headline features for the release should get a
- workout with memory checking enabled!
- - Double-check that we have removed anything tagged with a comment
- containing the words XXX-REMOVE-BEFORE-RELEASE or
- XXX-REVIEW-BEFORE-RELEASE. ('git grep XXX-RE' should only show up
- hits in this file itself.)
- - Now update the version numbers and the transcripts in the docs, by
- checking out the release branch and running
- make distclean
- ./release.pl --version=X.YZ --setver
- Then check that the resulting automated git commit has updated the
- version number in the following places:
- * putty/LATEST.VER
- * putty/doc/plink.but
- * putty/doc/pscp.but
- * putty/windows/putty.iss (four times, on consecutive lines)
- and also check that it has reset the definition of 'Epoch' in
- Buildscr.
- - Make the release tag, pointing at the version-update commit we just
- generated.
- - If the release is on a branch (which I expect it generally will
- be), merge that branch to master.
- - Write a release announcement (basically a summary of the changes
- since the last release). Squirrel it away in
- atreus:src/putty-local/announce-<ver> in case it's needed again
- within days of the release going out.
- - Update the website, in a local checkout:
- * Write a release file in components/releases which identifies the
- new version, its release date, a section for the Changes page,
- and a news announcement for the front page.
- * Disable the pre-release sections of the website (if previously
- enabled), by editing prerel_version() in components/Base.mc to
- return undef.
- - Update the wishlist, in a local checkout:
- * If there are any last-minute wishlist entries (e.g. security
- vulnerabilities fixed in the new release), write entries for
- them.
- * If any other bug fixes have been cherry-picked to the release
- branch (so that the wishlist mechanism can't automatically mark
- them as fixed in the new release), add appropriate Fixed-in
- headers for those.
- * Add an entry to the @releases array in control/bugs2html.
- - Build the release, by checking out the release tag:
- git checkout 0.XX
- bob . RELEASE=0.XX
- This should generate a basically valid release directory as
- `build.out/putty', and provide link maps and sign.sh alongside that
- in build.out.
- - Double-check in build.log that the release was built from the right
- git commit.
- - Do a bit of checking of the release binaries:
- * make sure they basically work
- * check they report the right version number
- * if there's any easily observable behaviour difference between
- the release branch and master, arrange to observe it
- * test the Windows installer
- * test the Unix source tarball.
- - Sign the release: in the `build.out' directory, type
- sh sign.sh -r putty
- and enter the passphrases a lot of times.
- The actual release procedure
- ----------------------------
- Once all the above preparation is done and the release has been built
- locally, this is the procedure for putting it up on the web.
- - Upload the release itself and its link maps to everywhere it needs
- to be, by running this in the build.out directory:
- ../release.pl --version=X.YZ --upload
- - Check that downloads via version-numbered URLs all work:
- ../release.pl --version=X.YZ --precheck
- - Switch the 'latest' links over to the new release:
- * Update the HTTP redirect at the:www/putty/htaccess .
- * Update the FTP symlink at chiark:ftp/putty-latest .
- - Now verify that downloads via the 'latest' URLs are all redirected
- correctly and work:
- ../release.pl --version=X.YZ --postcheck
- - Push all the git repositories:
- * run 'git push' in the website checkout
- * run 'git push' in the wishlist checkout
- * push from the main PuTTY checkout. Typically this one will be
- pushing both the release tag and an update to the master branch,
- plus removing the pre-release branch, so you'll want some
- commands along these lines:
- git push origin master # update the master branch
- git push origin --tags # should push the new release tag
- git push origin :pre-0.XX # delete the pre-release branch
- - Run ~/adm/puttyweb.sh on atreus to update the website after all
- those git pushes.
- - Check that the unpublished website on atreus looks sensible.
- - Run webupdate, so that all the changes on atreus propagate to
- chiark. Important to do this _before_ announcing that the release
- is available.
- - After running webupdate, run update-rsync on chiark and verify that
- the rsync mirror package (~/ftp/putty-website-mirror) contains a
- subdirectory for the new version and mentions it in its .htaccess.
- - Announce the release!
- + Construct a release announcement email whose message body is the
- announcement written above, and which includes the following
- headers:
- * Reply-To: <putty@projects.tartarus.org>
- * Subject: PuTTY X.YZ is released
- + Mail that release announcement to
- <putty-announce@lists.tartarus.org>.
- + Post it to comp.security.ssh.
- + Mention it in <TDHTT> on mono.
- - Edit ~/adm/puttysnap.sh to disable pre-release builds, if they were
- previously enabled.
- - Relax (slightly).
|