Project

General

Profile

How to use buildbot

The iSALE trunk is automatically build tested using buildbot (http://trac.buildbot.net). The results of the automatic tests are recorded here and warnings are sent by email to all core developers if a build fails.

Forced builds

A build test can be activated from the iSALE buildbot web page. Select the buildbot slave by clicking one of the links at the top of the columns, then select "Force build" and enter the data about the reason for your build test.

Automatic builds

The buildbot is currently configured to check for iSALE repository updates every hour. If the repository has been modified, the buildbot will spawn a number of builders, which are each configured for different platforms or configuration options (e.g., with debugging, with different compiler, etc.). Each builder updates its copy of the repository and then performs the standard installation steps: configure, make clean, make, make install.

Adding a new builder on the same slave

Buildbot instructions are defined in the master.cfg file in the masters/isale directory. In this example, we add a new builder called ubuntu64-newbuild to the ubuntu64 slave.

Step 1: Add a new builderName to the list in c['schedulers']:

c['schedulers'].append(Scheduler(name="sched-compile", branch=None,treeStableTimer=60,
                                 builderNames=["ubuntu64-gcc4", "ubuntu64-gcc4-debug", "ubuntu64-intel", "ubuntu64-newbuild"]))

Step 2: Add environment options for the builder, if required:

mod_ubuntu_newbuild = {'LIBS': '-lX11',
                   'PATH': '/usr/lib/mpich/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11'}

Step 3: Add the command sequence, e.g.:

src_ubuntu64_newbuild = [s(source.SVN, mode='update', svnurl=isalesvn, username=isaleuser, password=isalepasswd),
                     s(shell.ShellCommand, command=["./configure",
                                                    "--prefix=/var/lib/buildbot/slaves/isale/ubuntu64-newbuild/install",
                                                    "--with-vimod","--with-mpi","--with-mpi-lib=/usr/lib/openmpi/lib/libmpi.a"],
                       env=mod_ubuntu64_newbuild, description=["Configuring"], haltOnFailure=True),
                     s(shell.ShellCommand, command=["make", "clean"],
                       env=mod_ubuntu64_newbuild, description=["Make clean"], haltOnFailure=True),
                     s(shell.ShellCommand, command=["make"],
                       env=mod_ubuntu64_newbuild, description=["Building"], haltOnFailure=True),
                     s(shell.ShellCommand, command=["make","install"],
                       env=mod_ubuntu64_newbuild, description=["Installing"], haltOnFailure=True)]

Step 4: Add a factory to perform the command sequence:

fac_ubuntu64_newbuild = factory.BuildFactory(src_ubuntu64_newbuild)

Step 5: Add a builder entry as:

bld_ubuntu64_newbuild = {'name': "ubuntu64-newbuild",
      'slavename': "ubuntu64",
      'builddir': "ubuntu64-newbuild",
      'factory': fac_ubuntu64_newbuild} 

Step 6: Add the builder into c['builders'].

c['builders'] = [bld_ubuntu64_gcc4, bld_ubuntu64_gcc4_debug, bld_ubuntu64_intel, bld_ubuntu64_newbuild]

Step 7: Save the master.cfg file and reconfigure the build master with the command make reconfig