Contributing a BuildBot

Introduction

So! You've decided you're interested in contributing to our PCP buildbot project. First off, thank you! You're awesome. If you aren't interested in contributing a buildbot, and have made your way to this page by accident, well, that's too bad, but you now owe us your soul. I suggest you stay around and contribute a buildbot, it's much easier, and involves far less tedious paperwork.

The PCP buildbot project, is an effort to reduce the number of those pesky bugs found on various platforms by testsuite automation. This means we can have our limited number of code monkeys focus solely on frantically mashing their keyboards to produce more fantastic and (hopefully!) bug free code. "No way!" you say to yourself. Yes way. In fact, it gets even better. By contributing a buildbot to this project, you can be proactively certain, your favourite platform will be ready to upgrade the instant a new PCP release drops. Regardless of what OS our monkeys were using throughout the development cycle.

Now take a deep breath, relax, and calmly repeat our favourite gnus mantra: "dingus dingus dingus" as we dive into the more technical details.

Definitions

  • BuildBot: This is the name of the open source testing framework we use. More in-depth information about the project can be found here.
  • Buildmaster: A buildmaster is the controlling node within the framework. It polls the source code repository for changes, schedules builds amongst the connected machines, provides the web interface, and records results. It hasn't quite yet learned to get your coffee, but we're working on it. The buildmaster for PCP can be found at buildbot.pcp.io
  • Buildslave: A buildslave is what you'll be contributing. It's the machine which connects to the Buildmaster, builds the latest sources, and runs the full testsuite when there is a new set of commits. The more variety of architectures and operating systems we have within our set of buildslaves, the better.

Prerequisites

1. The first order of business is to setup your buildslave to properly compile the PCP sources, and run the full testsuite. The testsuite should aim to have as few [notrun] tests as possible, and no failures. Please take note of each step required along the way, as we'll have to reproduce them later in the recipe for your buildslave.

2. Once you've ensured the PCP qa environment is setup properly, we need to install the buildslave's dependencies. This should be as simple as installing your distribution's python-setuptools package. Specific directions can be found here.

3. Run the setup-buildslave script provided in the sources (qa/buildbot/setup-buildslave) to automatically setup the buildslave environment. This script is fairly straightforward if one would like to inspect it and run each step by hand. Once completed, please contact a Lukas (lberk on irc/mailing lists) or a PCP maintainer with your buildslave name, password, and the list of steps required to install and run the PCP testsuite.

4. Once your buildslave has been added to the collective, start your buildslave with the command `buildslave start NAME` and review the subsequent results of your buildslave on the buildbot waterfall page. Please consider adding an `@reboot start [basedir]` cronjob entry to automatically restart your buildslave if your machine reboots. To aid in this, we've added a convenience script 'buildslave-cronjob' in the sources (qa/buildbot/setup-buildslave).