-
Welcome
1 Lecutre -
Design of CPython’s Compiler
6 Lecutre -
Running a buildbot worker
2 Lecutre
Conventional always-on machines
You need a recent version of the buildbot software, and you will probably want a separate ‘buildbot’ user to run the buildbot software. You may also want to set the buildbot up using a virtual environment, depending on how you manage your system. We won’t cover how to that here; it doesn’t differ from setting up a virtual environment for any other software, but you’ll need to modify the sequence of steps below as appropriate if you choose that path.
For Linux:
- If your package manager provides the buildbot worker software, that is probably the best way to install it; it may create the buildbot user for you, in which case you can skip that step. Otherwise, do
pip install buildbot-worker
.- Create a
buildbot
user (using, eg:useradd
) if necessary.- Log in as the buildbot user.
For Mac:
- Create a buildbot user using the OS/X control panel user admin. It should be a “standard” user.
- Log in as the buildbot user.
- Install the buildbot worker [1] by running
pip install buildbot-worker
.
For Windows:
- Create a buildbot user as a “standard” user.
- Install the latest version of Python from python.org.
- Open a Command Prompt.
- Execute
python -m pip install pypiwin32 buildbot-worker
(note thatpython.exe
is not added toPATH
by default, making thepython
command accessible is left as an exercise for the user).
In a terminal window for the buildbot user, issue the following commands (you can put the buildarea
wherever you want to):
mkdir buildarea
buildbot-worker create-worker buildarea buildbot.python.org:9020 workername workerpasswd
(Note that on Windows, the buildbot-worker
command will be in the Scripts
directory of your Python installation.)
Once this initial worker setup completes, you should edit the files buildarea/info/admin
and buildarea/info/host
to provide your contact info and information on the host configuration, respectively. This information will be presented in the buildbot web pages that display information about the builders running on your worker.
You will also want to make sure that the worker is started when the machine reboots:
For Linux:
Add the following line to
/etc/crontab
:@reboot buildbot-worker restart /path/to/buildareaNote that we use
restart
rather thanstart
in case a crash has left atwistd.pid
file behind.
For OSX:
Create a bin directory for your buildbot user:
mkdir binPlace the following script, named
run_worker.sh
, into that directory:#!/bin/bash export PATH=/usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH export LC_CTYPE=en_US.utf-8 cd /Users/buildbot/buildarea twistd --nodaemon --python=buildbot.tac --logfile=buildbot.log --prefix=workerIf you use pip with Apple’s system python, add ‘/System’ to the front of the path to the Python bin directory.
Place a file with the following contents into
/Library/LaunchDaemons
:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>net.buildbot.worker</string> <key>UserName</key> <string>buildbot</string> <key>WorkingDirectory</key> <string>/Users/buildbot/buildarea</string> <key>ProgramArguments</key> <array> <string>/Users/buildbot/bin/run_worker.sh</string> </array> <key>StandardOutPath</key> <string>twistd.log</string> <key>StandardErrorPath</key> <string>twistd.log</string> <key>KeepAlive</key> <true/> <key>SessionCreate</key> <true/> </dict> </plist>The recommended name for the file is
net.buildbot.worker
.
For Windows:
- Add a Scheduled Task to run
buildbot-worker start buildarea
as the buildbot user “when the computer starts up”. It is best to provide absolute paths to thebuildbot-worker
command and thebuildarea
directory. It is also recommended to set the task to run in the directory that contains thebuildarea
directory.- Alternatively (note: don’t do both!), set up the worker service as described in the buildbot documentation.
To start the worker running for your initial testing, you can do:
buildbot-worker start buildarea
Then you can either wait for someone to make a commit, or you can pick a builder associated with your worker from the list of builders and force a build.
In any case you should initially monitor builds on your builders to make sure the tests are passing and to resolve any platform issues that may be revealed by tests that fail. Unfortunately we do not currently have a way to notify you only of failures on your builders, so doing periodic spot checks is also a good idea.