wiki:BuildAutomation

Build Automation

The Bitten plugin for Trac has been installed to allow automation of builds. Build slaves can be configured to run in the background so that whenever a source code checkin is made, the affected part of the tree is rebuilt and tested. This mainly applies to trunk.

For a list of currently configured build slaves, check the Build Status page.

Setting Up a Build Slave

If you wish to run a build slave for a platform that is not already set up, please contact the developers so that Trac can be configured. Currently we only test on a few platforms so more are always welcome!

Slaves are authenticated using Trac accounts, so you must request an account if you do not already have one. Authentication is performed via HTTPS.

Download the latest BittenSlave from http://bitten.edgewall.org/wiki/Download and the minion utility. Minion is provided by the Box Backup project.
N.B. It is recommended to set up a dedicated user for running the build slave to ensure a clean environment, but this is not a requirement.
Once BittenSlave has been installed copy minion to the directory you want builds to be run from. Ensure it is executable.

Generate the bitten-slave configuration:

$ ./minion gen-config
Config generated as sunos.ini.
Please set Trac user/pass in the [authentication] section.

As instructed, set the username and password for Trac in the config file. There is also a section in the file (commented out) for masking the machine's hostname.

Run minion for the first time. This will perform a check of the environment.

$ ./minion 
This looks like the first time you've run the bitten minion.
I need to check a few things out first...

Checking for Subversion... OK
Checking for autoconf... OK
Checking for automake... OK
Checking for gcc... OK
Checking for g++... OK
Checking for xsltproc... OK
Checking for LWP::UserAgent... OK
Checking if SSH key exists... 
  ==> SSH key does not exist. Running ssh-keygen.
Generating public/private rsa key pair.
Your identification has been saved in /home/bitten/.ssh/bitten-minion.
Your public key has been saved in /home/bitten/.ssh/bitten-minion.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx [email protected]

  ==> SSH key generated. Be sure to have the key uploaded to the build master!

All done! Binaries look fine, but make sure you have headers for the following:
 - openssl
 - zlib

Exiting so you can check this, rather than having failed builds reported.
Just re-run minion when ready.

Take good note of its output! You must ensure that the OpenSSL and Zlib libraries and headers are installed! If anything is missing then builds will be reported as failed. If unsure, try manually compiling trunk and running the unit tests. An SSH key is also generated as part of the output to facilitate uploading of binaries produced. Please ensure you send the public portion of the key to one of the developers. (Ask on the boxbackup-dev list if you aren't sure.)

Once everything has been verified minion can be started:

$ ./minion
[INFO    ] Slave launched at 2011-05-03 11:33:53
[INFO    ] No pending builds

By default it will run in the foreground and log to a file called bitten.log in the same directory. If you wish to background it, you may start it with nohup.

$ nohup ./minion &

There are also examples for daemonizing the slave on the bitten website.

Last modified 6 years ago Last modified on May 3, 2011, 12:28:53 PM