[Buildbot-devel] Multi-distro Buildbot success story
John Morris
john at zultron.com
Wed May 7 17:55:39 UTC 2014
The dust hasn't completely settled, but I'm excited to show off the
multi-distro, multi-arch Buildbot we use to test contributions to the
Machinekit open-source project (http://www.machinekit.io). I thought
our instance might be interesting in this forum since it's publicly
viewable and is perhaps a fairly complex example. See it here:
http://buildbot.dovetail-automata.com/
And the configuration (still a mess):
https://github.com/zultron/machinekit-buildbot
The Buildbot currently builds for four distros, Wheezy, EL6, and Fedora
19+20; Jessie will be added soon. It builds 32- and 64- bit x86
architectures, with ARM on the way. The unit test build slaves also run
one of two real-time kernels, with a third to be added.
The project is Machinekit, a machine controller based on LinuxCNC,
requiring a real-time thread environment. We recently extended
Machinekit to support not only the RTAI RT kernel that LinuxCNC
originally supports, but also PREEMPT_RT, Xenomai userland and Xenomai
kernel threads, and non-RT POSIX threads, corresponding to the '*-tst'
builders on the Buildbot (RTAI currently absent). The RTOS work
included revamping the build and run-time systems to build loadable
modules for all available RT environments in a single './configure &&
make', and run-time scripts detect the running RT environment and load
the appropriate thread modules.
This so-called 'Universal Build' enables an interesting Buildbot
workflow. The 'builder0' slave is configured with 8 CPUs, and runs the
build in a chroot environment for each of the eight distro+arch
combinations ('*-bld' builders), building modules for four threads
systems. Each of these build results is then sent to two matching test
slaves, one running RT_PREEMPT, the other Xenomai kernels, which then
run unit tests to cover all thread systems. The 'builder0' slave also
builds packages for each distro+arch ('*-pkg' builders), as well as a
large documentation tree for each distro (arch-independent '*-doc'
builders).
This Buildbot is specially important to the Machinekit project, which
uses the C4 process (http://rfc.zeromq.org/spec:22) to minimize hurdles
of contribution submission and acceptance in hopes of scaling up
community development. By C4, patches only need to follow a few simple,
formal rules to be accepted, including compiling and testing cleanly.
With the variety of platforms requiring testing, Buildbot saves time and
effort for developers. Also because C4 standards don't require value
judgements by reviewers, unlike standards of many other projects,
comprehensive testing on all supported platforms is relatively more
critical.
Please feel free to poke around the Buildbot web GUI and configuration.
Suggestions/criticisms are very welcome! (Please CC: me on list replies.)
Thanks-
John
More information about the devel
mailing list