January 10, 2006
Putting Out a New Release of MonadWe are just about to put out a new release of Monad. So what is involved in putting a release out for download?
The first step is to actually produce the bits. This is what the whole team works on, and the end result is a .msi file (one .msi file per processor architecture, actually). We run a series of tests on our daily builds; when a build is about to be released to the public we run a full set of tests on Longhorn, XP, and Server 2003, running on x86, x64, and ia64, for both the retail and debug builds (even though we only publicly ship the retail builds). There winds up being a matrix of about 20 machines that we run a full test pass on.
Then, because we are releasing the bits publicly, we have to sign them with Microsoft's official private key. To do this we send the bits off to a team at Microsoft called Product Release Services, which submits them to the official machines that guard Microsoft's private key. Since it would be very bad if someone managed to PRS sign some rogue bits, you need a submitter and 2 approvers who all need to be Microsoft full-time employees, and they need to use their cardkey PIN to prove it is them. It takes about an hour for the signing to happen.
(We actually PRS sign the bits before running the final test pass, to ensure we are testing the real final bits. There is also an extra dipsy-doodle because the .msi file contains the binaries within it. So we actually PRS sign the individual binaries, then rebuild the .msi to contain the PRS signed binaries, then submit the .msi itself to be PRS-signed.)
Once we have the final signed bits, we run an internal program called CheckPoint Express. This is a tool that requires you to certify that you have taken a series of required steps before you release. Some of these are simple questions, such as whether you include any 3rd-party code (the questions vary slightly depending on if it is a beta or a final release). There are several scanning tools you have to run on the binaries: APIScan (ensures you are calling publicly documented APIs), PoliCheck (checks for geopolitically inappropriate terminology), binsearch (makes sure you are not shipping certain obsolete binaries), and virus checking (making sure there are no viruses in your binaries). CheckPoint Express asks you all these questions and at the end gives you the green light (literally: when you answer all the questions satisfactorily, the status indicator for your release changes from a red to a green circle).
Since Monad is released as a web download, the next step after CheckPoint Express signoff is to create the actual file that will be downloaded. In this case it's just a .zip containing the .msi plus the release notes (we also create a separate .zip for the Documentation Pack). The release notes are something we attempt to keep up-to-date throughout the milestone, but at the end we always have to go back and make sure we haven't missed anything. It's mainly a quick heads-up on major changes, known issues, etc.
Once the .zip files are ready, we then use something called the Download Management Tool to put the download up on Microsoft's Download Center. The DMT lets you specify all the information you see on the Download Center pages. It's a bit tricky at this point because you want the releases to link to each other -- the actual Monad drops should point to the Documentation Pack and vice versa, and ideally the release notes (which are bundled into the .zip files of the releases) should have the URL of the Documentation Pack page on Download Center, which you are in the process of creating. Suffice it to say that if you order it right you can get all this fixed up correctly.
Once the release is submitted to Download Center there is a final round of signoff where our test manager OKs the bits and we provide a pointer to the CheckPoint Express signoff (this is all done via web pages; there's no person on the back end who has to give a final OK, just members of the Monad team). At the end we can hit the button on Download Center to send the bits out...then we wait some imprecise time between 30 and 90 minutes...and lo and behold the releases are out there for everyone to enjoy.
Posted by AdamBa at January 10, 2006 12:30 PM
TrackBack URL for this entry: