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.