X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=CHECKLST.txt;h=51e11593cdbafa15b674dd9148b4642e95cb5ea1;hb=222c134b5f4f5397f2a15d36813286edeb3cff5e;hp=e131500ff29ccab3ff53e0d5ce498c4542d8166d;hpb=ce5be27773518715df905459bd7edd3fcd46ae90;p=PuTTY.git diff --git a/CHECKLST.txt b/CHECKLST.txt index e131500f..51e11593 100644 --- a/CHECKLST.txt +++ b/CHECKLST.txt @@ -39,8 +39,15 @@ The website: - putty-website/licence.html -Before tagging a release ------------------------- +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 @@ -52,78 +59,97 @@ Before tagging a release particular, any headline features for the release should get a workout with memory checking enabled! -For a long time we got away with never checking the current version -number in at all - all version numbers were passed into the build -system on the compiler command line, and the _only_ place version -numbers showed up in the source files was in the tag information. - -Unfortunately, those halcyon days are gone, and we do need the -version number checked in in a couple of places. These must be updated -_before_ tagging a new release. + - 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.) -The file used to generate the Unix snapshot version numbers (which -are - so that the Debian versioning system -orders them correctly with respect to releases): + - Now update the version numbers and the transcripts in the docs, by + checking out the release branch and running - - putty/LATEST.VER + make distclean + ./release.pl --set-version=X.YZ -The Windows installer script (_four_ times, on consecutive lines): + Then check that the resulting automated git commit has updated the + version number in the following places: - - putty/windows/putty.iss + * putty/LATEST.VER + * putty/doc/plink.but + * putty/doc/pscp.but + * putty/windows/putty.iss (four times, on consecutive lines) -The Windows resource file (used to generate the binary bit of the -VERSIONINFO resources -- the strings are supplied by the usual means): + and also check that it has reset the definition of 'Epoch' in + Buildscr. - - putty/windows/version.rc2 (BASE_VERSION; NB, _comma_-separated) + - Make the release tag, pointing at the version-update commit we just + generated. -It might also be worth going through the documentation looking for -version numbers - we have a couple of transcripts showing the help -text from the command-line tools, and it would be nice to ensure the -whole transcripts (certainly including the version numbers) are up -to date. Sometimes these are marked in between releases as `0.XX', so -it's worth grepping for that too. + - If the release is on a branch (which I expect it generally will + be), merge that branch to master. - - putty/doc/pscp.but - - putty/doc/plink.but - - putty/doc/psftp.but (in case it ever acquires a similar thing) + - Write a release announcement (basically a summary of the changes + since the last release). Squirrel it away in + atreus:src/putty-local/announce- in case it's needed again + within days of the release going out. -The actual release procedure ----------------------------- + - Update the web site, in a local checkout. + + Adjust front page to say 'The latest version is '. + + Adjust front page to add a news item. + + Adjust Download page to say 'The latest release version ()'. + + Adjust Download page to update filenames of installer and Unix + tarball (both in the hrefs themselves and the link text). + + Check over the Download page and remove any mention of + pre-releases, if there were any before this release. Comment out + the big pre-release section at the top, and also adjust the + sections about source archives at the bottom. + + Do the same on the Docs page. + + Adjust header text on Changelog page. (That includes changing + `are new' in previous version to `were new'!) + + .htaccess has an individual redirect for each version number. Add + a new one. -This is the procedure I (SGT) currently follow (or _should_ follow -:-) when actually making a release, once I'm happy with the position -of the tag. + - If there are any last-minute wishlist entries (e.g. security + vulnerabilities fixed in the new release), write entries for them + in a local checkout of putty-wishlist. - - Double-check that we have removed anything tagged with a comment - containing the words XXX-REMOVE-BEFORE-RELEASE or - XXX-REVIEW-BEFORE-RELEASE. + - Update the wishlist mechanism for the new release. This can be done + without touching individual items by editing the @releases array in + control/bugs2html. - - Write a release announcement (basically a summary of the changes - since the last release). Squirrel it away in - atreus:src/putty/local/announce- in case it's needed again - within days of the release going out. + - 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. - - Build the release: `bob putty-0.XX 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 that the release binaries basically work, report their version numbers accurately, and so on. Test the installer and the Unix source tarball. - - Save the link maps. Currently I keep these on atreus, in - src/putty/local/maps-. + - Sign the release: in the `build.out' directory, type + sh sign.sh -r putty + and enter the passphrases a lot of times. - - Sign the release: in the `build.out' directory, type `./sign.sh - putty Releases', and enter the passphrases a lot of times. +The actual release procedure +---------------------------- - - Now the whole release directory should be present and correct. - Upload it to atreus:www/putty/. +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. - - Do final checks on the release directory: + - Save the link maps. Currently I keep these on atreus, in + src/putty-local/maps-. + rsync -av maps-x86/ atreus:src/putty-local/maps-X.YZ + + - Upload the entire release directory to atreus:www/putty/. + rsync -av putty/ atreus:www/putty/X.YZ + + - Do final checks on the release directory in its new location: + verify all the signatures: - for i in `find . -name '*.*SA'`; do case $i in *sums*) gpg --verify $i;; *) gpg --verify $i ${i%%.?SA};; esac; done + for i in `find . -name '*.gpg'`; do case $i in *sums*) gpg --verify $i;; *) gpg --verify $i ${i%%.gpg};; esac; done + check the checksum files: md5sum -c md5sums sha1sum -c sha1sums @@ -132,41 +158,43 @@ of the tag. - Having double-checked the release, copy it from atreus to chiark:ftp/putty- and to the:www/putty/. + rsync -av putty/ chiark:ftp/putty-X.YZ + rsync -av putty/ the:www/putty/X.YZ - Check the permissions! Actually try downloading from the, to make sure it really works. - - Update the HTTP redirects. - + Update the one at the:www/putty/htaccess which points the - virtual subdir `latest' at the actual latest release dir. TEST - THIS ONE - it's quite important. - + atreus:www/putty/.htaccess has an individual redirect for each - version number. Add a new one. + - Update the HTTP redirect at the:www/putty/htaccess which points the + virtual subdir `latest' at the actual latest release dir. TEST THIS + ONE - it's quite important. - Update the FTP symlink (chiark:ftp/putty-latest -> putty-). - - Update web site. - + Adjust front page to say 'The latest version is '. - + Adjust front page to add a news item. - + Adjust Download page to say 'The latest release version ()'. - + Adjust Download page to update filenames of installer and Unix - tarball (both in the hrefs themselves and the link text). - + Check over the Download page and remove any mention of - pre-releases, if there were any before this release. Comment out - the big pre-release section at the top, and also adjust the - sections about source archives at the bottom. - + Adjust header text on Changelog page. (That includes changing - `are new' in previous version to `were new'!) - - - Update the wishlist. This can be done without touching individual - items by editing the @releases array in control/bugs2html. - - Check the Docs page links correctly to the release docs. (It should do this automatically, owing to the `latest' HTTP redirect.) - - Check that the web server attaches the right content type to .HLP - and .CNT files. + - Check that the web server attaches the right content type to .HLP, + .CNT and .CHM files, by downloading one of each and checking + they're all application/octet-stream. + for ext in hlp cnt chm; do curl -v http://the.earth.li/~sgtatham/putty/X.YZ/putty.$ext 2>&1 >/dev/null | grep Content-Type; done + + - Run 'git push' in the website checkout, and then 'git pull' in + ~/www/putty on atreus to fetch the website updates. + + - Push the changes to PuTTY itself. Something like: + 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 'git push' in the putty-wishlist checkout. Then run 'git pull' + in ~/pub/putty-wishlist on atreus, and update the wishlist web + pages with the commands + cd ~/pub/putty-wishlist/control + perl bugs2html + + - Check over the web site to make sure all the changes to wishlist + and main web pages are present and correct. - Run webupdate, so that all the changes on atreus propagate to chiark. Important to do this _before_ announcing that the release @@ -177,20 +205,17 @@ of the tag. subdirectory for the new version and mentions it in its .htaccess. - Announce the release! - + Mail the announcement to . - * Put a 'Reply-To: putty@projects.tartarus.org' header on the - mail so that people don't keep replying to my personal - address. + + Construct a release announcement email whose message body is the + announcement written above, and which includes the following + headers: + * Reply-To: + * Subject: PuTTY X.YZ is released + + Mail that release announcement to + . + Post it to comp.security.ssh. + Mention it in on mono. - - Relax (slightly). - -After the release ------------------ - -The following want doing some time soon after a release has been made: + - Edit ~/adm/puttysnap.sh to disable pre-release builds, if they were + previously enabled. - - If the release was made from a branch, make sure the version number - on the _trunk_ is up to date in all the locations listed above, so - that (e.g.) Unix snapshots come out right. + - Relax (slightly).