In March 2007 I announced my intention to make nightly builds available, starting with Synergy and after a couple of weeks of testing, Synergy Advance and then Hextrapolate, with other products to follow.
Created most weekdays from the previous day’s work, these builds may or may not work. Use them to verify that a bug you’re tracking has been fixed. We make nightly builds for testing only. We write code and post the results right away so people like you can join our testing process and report bugs. You will find bugs, and lots of them. Mozilla might crash on startup. It might delete all your files and cause your computer to burst into flames. Don’t bother downloading nightly builds if you’re unwilling to put up with problems.
- Users can confirm that bugs are fixed soon after changes are committed to the source code repository.
- Users don’t have to wait for an official release in order to start benefitting from new features under development.
- Greater transparency of the development process: users can see progress as it is being made.
How it works
I’ve written a Ruby script that performs the following steps for each product:
- Checks the Git revision number of the latest version of the codebase: if the revision number hasn’t changed since the last run then this means that no changes have been finalized and the product is skipped. You can see which changes are being checked in in real-time by subscribing to the Git log.
- If changes have been made checks out (clones) a complete copy of the latest version of the codebase.
- Performs a full build of the software; this may be a multi-step process.
- Runs any automated tests.
- Uploads the built software to the server. Each nightly will be identified by a unique combination of product name and Git hash: for example, the first Synergy nightly was labelled as "Synergy (revision 325)"; note that the revision number is not the same as the official version number used to label official releases.
- Publishes a new entry to the Nightlog (feed) including basic information about the build (name, size, checksum, download URL and so forth).
Although the builds are called "nightlies" there are a number of reasons why a new nightly might not appear on any given day:
- If no changes have been finalized in the previous 24 hours then no new build will be made.
- This will often be the case as I tend to work on the same product for a whole day at a time, sometimes several consecutive days, before switching over to work on another product.
- Another factor is that some changes only become visible when they are "committed" to the repository (finalized), so work may be in progress but I may not yet be ready to commit it. I try to follow a continuous integration development model which means that only changes which don’t cause test failures get committed.
- If there are any build errors then the nightly isn’t uploaded; this should rarely happen as I continuously test my changes as I apply them but it could conceivably occur occasionally.
- If any automated unit tests fail then the nightly isn’t uploaded; again this should rarely happen as I continuously test my changes but it could occur when making larger changes to the codebase (although I try to break such large changes into smaller, incremental steps wherever possible).
- If there are local network connectivity problems here where I do my development work (in Spain); the builds take place here on my local system, but they depend on connectivity to the Subversion server (USA) and the webserver (USA).
- List of Synergy nightlies.
- List of Synergy Advance nightlies
- List of Hextrapolate nightlies
- The Nightlog archives for all products.
- The Nightlog RSS feed.
- Summary of recent entries to the Nightlog (see the right-hand column of my personal weblog).
As noted on the Nightlog pages:
Nightly builds are generated once per day by an automated system; they are not official releases and they receive no human testing prior to being uploaded. They are provided with no warranty of any kind; use them at your own risk.