The goal of this document is to construct a continuous integration and testing system for the desktop CD installer (ubiquity), such that every bzr commit to ubiquity trunk will result in a build of ubiquity, a live environment created containing that build, and a number of netbooks booted and run through a series of tests using this build. These netbooks will not be physically modified and should be able to be added and removed with minimal change to this system.

As netbooks do not have a BIOS option to boot when provided power, they cannot be used with a remote power unit. Equally, while some netbooks support wake to boot, not all do. Because of this, the netbooks will be left in a suspended state, woken up, and made to immediately reboot on this condition. As NFS and TCP have short-lived timeouts, each suspended netbook will be assumed to be in a state where any further reads from disk will fail. To work around this, during suspend, /sbin/reboot and all of its dynamically-linked libraries will be loaded into memory, using a similar approach to the one taken by casper. Upon resume, reboot will be called with the -f flag (reboot immediately).

The Hudson continuous integration system will be used to drive all of these tasks, and will be partitioned into three jobs. The netbooks are assumed to have been PXE booted into the last live image and suspended, to start.

Configuration

You will need the following configuration on your Hudson master.

Change the IP address in nfsroot= to that of your Hudson master in tftpboot/pxelinux.cfg/default.

Hudson jobs

build-root

build-ubiquity

builds build-root once complete

sikuli

Tips

You can run shell code in the Groovy script console for each slave, using similar code to this:

"""cat /var/log/casper.log""".execute().text

Installer/Testing (last edited 2010-12-13 12:48:23 by eth0)