OpenAFS Buildbot Configuration
The OpenAFS buildbot configuration and Ansible playbook is maintained in github.
Ansible Playbook
The buildbot configuration is managed with an Ansible playbook. The Anisble playbook may also be used to install a local installation for testing the buildbot configuration.
A github webhook has been setup to automatically run the ansible playbook when changes are merged to the afsbotcfg master branch.
Playbook setup
This playbook depends on Ansible roles for the buildbot master. First, install the buildbot master role from Ansible Galaxy.
ansible-galaxy collection install openafs_contrib.buildbot
Cleckout the afsbotcfg project with git clone.
The user and worker passwords are encrypted with Ansible vault. The vault
key is available to the buildbot administrators. Place the vault key
in .vault-afsbotcfg
.
Set the following env vars:
export ANSIBLE_INVENTORY=inventory/openafs/hosts.ini
export ANSIBLE_VAULT_IDENTITY_LIST=afsbotcfg@.vault-afsbotcfg
Run the playbook with ansible-playbook
:
ansible-playbook openafs_buildbot.yaml
Manual Installation
This section describes how to manually install and configure the buildbot without Ansible. These instructions predate the use of Ansible to manage the buildbot configuration.
Buildbot master installation
The following instructions describe how to use pip
to install the buildbot
master in a Python virtual environment. With sudo/root access, install Python3
and the development packages for it.
Ensure TCP ports 9989 and 8010 are open. Create a buildbot
user on the
system. The remaining steps to not require sudo access and should be run as
the buildbot
user.
Optionally create a project level directory, for example:
$ mkdir openafs-buildbot
$ cd openafs-buildbot
Create a Python virtual environment:
$ python3 -m venv venv
Activate the virtual environment for the installation:
$ source venv/bin/activate
Install buildbot and it's dependencies:
$ pip install --upgrade pip
$ pip install 'buildbot[bundle]'
Create the buildbot master instance:
$ buildbot create-master master
The virtual environment can now be deactivated:
$ deactivate
Master configuration
Download the buildbot master configuration:
$ git clone https://github.com/openafs-contrib/afsbotcfg.git
$ cd afsbotcfg
Create the Makefile
and deploy the buildbot master.cfg
and
sample settings.ini
file:
$ python configure.py
$ make install
Make a link to the makefile in the top level directory:
$ cd ..
$ ln -s afsbotcfg/Makefile
Master settings
Edit the settings.ini
file in the master
directory. This file stores
information we do not track with git, such as the buildbot worker passwords.
The settings.ini
file is an INI-style file with the following sections:
- local - settings specific to the local environment
- admins - the list of user emails and passwords for authenticated access
- email - emails for notifications
- workers - the list of worker names and passwords
Example:
$ cat master/settings.ini
[local]
buildbotURL = http://buildbot.openafs.org:8010/
[admins]
tycobb@yoyodyne.com = password
[workers]
example-worker-1 = secret1
example-worker-2 = secret2
Gerrit account
The buildbot master needs an account on the OpenAFS Gerrit to listen for
Gerrit events and to report verified changes on successful builds. The name of
the account is buildbot
. Place the ssh keys for the buildbot's Gerrit account
in the .ssh
directory under the home directory of the local account running
the buildbot master. The key file name should match the ones defined in the
master.cfg
file.