What is a nightly build?

A nightly build is some artifact (ie a jar file, javadocs, .tar.gz distribution) that is produced by some automated program or script downloading code from a version control system, compiling that code, producing those artifacts, and then making those artifacts publicly available.

Why run nightly builds?

They can provide a useful way to check that builds work as they are meant to (instead of having to check with fellow developers, you can check with the automated build). They can provide useful "preview" information to developers more loosely tracking progress of your project (maybe from a dependent project), who might need a downloadable to test their software against. They can help to keep some information up to date that is a pain to update manually (like javadocs, junit reports, ...)

Etc etc. Its a common practice.

Why not just use gump?

Gump doesn't quite do "regular" builds. Instead of compiling (linking) code against the listed dependencies, it will compile (link) against the latest bleeding-edge of those dependencies. This may not be what you want.

More importantly, gump retrieves code from "untrusted" sources and executes their builds without checking they don't tamper with anything. For example, imagine I was the author of a weird library that some weird commons code depended on...it is entirely possible to write a task in an ant build.xml file that recompiles a class in tomcat and opens a back door. That might take a while to notice.

What facilities do we have for nightly builds?

The ASF has a few new boxen to set up; one of those is Helios. Different Top-Level projects can be provided with solaris zones on that machine for doing nightly builds.

Another option you have available is to produce nightly builds on a non-ASF machine, then upload these every night to your private webspace on minotaur, or to http://cvs.apache.org/builds/. If you're interested in doing this, please talk to the infrastructure team first, as there's some security concerns there as well that deserve addressing.

  • No labels