[Buildbot-devel] Multi-distro Buildbot success story
Dustin J. Mitchell
dustin at v.igoro.us
Mon May 12 02:56:42 UTC 2014
This is a great write-up, and a nice use of Buildbot - thank you!
>From a skim through the configuration, it looks like you've made great
use of programmatic configuration, loading from JSON and building the
configuration objects from there.
Do you mind adding a link to http://trac.buildbot.net/wiki/SuccessStories ?
On Wed, May 7, 2014 at 1:55 PM, John Morris <john at zultron.com> wrote:
> 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:
> And the configuration (still a mess):
> 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'
> 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
> Please feel free to poke around the Buildbot web GUI and configuration.
> Suggestions/criticisms are very welcome! (Please CC: me on list replies.)
> Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
> 3 signs your SCM is hindering your productivity
> Requirements for releasing software faster
> Expert tips and advice for migrating your SCM now
> Buildbot-devel mailing list
> Buildbot-devel at lists.sourceforge.net
More information about the devel