= Introduction = OpenVPN project uses [http://buildbot.net/trac Buildbot] to help increase code quality. Buildbot is a Python application that can work in either ''master'' or ''slave'' mode. The ''buildmaster'' is the core server which accepts connections from ''buildslaves'' and tells them what they should do. Typically the clients fetch latest sources and report any build problems to buildbot which in turn informs developers via email. In software engineering this is called [http://en.wikipedia.org/wiki/Continuous_integration Continous integration] and helps prevent build problems go unnoticed for extended time periods. The clients (buildslaves) can and should run on a variety of hardware / OS platforms. For the server (buildmaster) the OS choice is largely irrelevant. As buildbot is a general-purpose (build) automation tool, it can also be used to automatically build packages for each buildslave architecture and then push them to a central repository for users to download. However, this adds significant amount of complexity and is prone to breakage. Therefore other means are used now to provide snapshots. It would be fairly easy to integrate additional code checking tools (e.g. [http://valgrind.org/ valgrind]) into the build process. As the number of buildslaves can easily get out of hand, the OpenVPN project can make use of ''your'' help - see below for details. Buildbot is described in more detail in the [http://buildbot.net/buildbot/docs/0.7.12/ Buildbot manual]. = Setting up the VPN connection = Our buildbot (buildmaster) is protected by OpenVPN. To connect your buildslave to it you need: 1. Active [https://community.openvpn.net/account OpenVPN community services user account] 1. Properly configured OpenVPN client 1. Membership in the appropriate LDAP group 1. Certificate authority (CA) key for the VPN 1. TLS-auth (TA) key for the VPN You need to do 1. yourself. The rest will be taken care of for the most part by Samuli, our community manager at openvpn.net. He can also be reached at #openvpn and #openvpn-devel channels as "mattock". = Setting up a buildslave = == Overview == Setting up a buildslave requires a few steps: 1. Make sure you can [wiki:TesterDocumentation build OpenVPN manually] 1. Install buildbot's requirements 1. Download and install buildbot 1. Configure buildslave (ask for instructions from samuli) More details are available in [http://buildbot.net/buildbot/docs/latest/manual/index.html the buildbot manual]. == Installing buildbot == === Installing buildbot using easy_install === Probably easiest way is to install buildbot is by using [http://pypi.python.org/pypi/setuptools easy_install]: it should be available your OS'es software repository. Using ''easy_install'' will keep buildslave isolated from your OS'es package management and take care of dependencies for you. It is easiest (but [http://peak.telecommunity.com/DevCenter/EasyInstall#custom-installation-locations not necessary]) to run ''easy_install'' as root: First switch to root account, e.g. using sudo or su: {{{ $ sudo -s }}} Next test that easy_install should work as expected: {{{ $ easy_install -n buildbot==0.7.12 }}} If all went well, install buildbot for real: {{{ $ easy_install buildbot==0.7.12 }}} Once buildslave is installed you can and should switch to an ordinary user account. == Configuring the buildslave == Buildslave configuration is covered thoroughly in the official buildslave setup instructions: * http://buildbot.net/buildbot/docs/0.7.12/#Creating-a-buildslave = List of existing buildslaves = Here's a comprehensive list of Buildslaves already running (as of Sep 2011). There can be several buildslaves that have the same OS/architecture combination, but this is seldom necessary. ||'''Operating system'''||'''Version'''||'''Architecture'''||'''24/7'''||'''Connection tests'''||'''Provided by'''||'''Notes'''|| ||Debian||5 (lenny)||amd64||Yes||No||mattock|||| ||Debian||6 (squeeze)||i386||Yes||No||mattock|||| ||Ubuntu||10.04||amd64||Yes||No||mattock|||| ||Fedora||16||i386||No||No||mattock|||| ||CentOS||6.x||amd64||Yes||No||mattock|||| ||FreeBSD||7.4||amd64||Yes||No(t yet)||cron2||ongoing|| ||FreeBSD||8.2||amd64||Yes||No(t yet)||cron2|||| ||FreeBSD||9.0||amd64||Yes||No(t yet)||cron2|||| ||OpenBSD||4.9||i386||Yes||No(t yet)||cron2|||| ||NetBSD||5.1||amd64||Yes||No(t yet)||cron2|||| = List of build permutations = At the moment (Sep 2011) each buildslave builds OpenVPN using all unique combinations of the following: * Branches: * "master" branch from openvpn.git * Build flags: * --disable-crypto * --disable-ssl * --disable-lzo * --disable-management = Troubleshooting = In case your build fails, try running the same build steps manually to see what the problem is. == Source checkout == Full checkouts do the following: {{{ $ git init $ git fetch -t git://openvpn.git.sourceforge.net/gitroot/openvpn/openvpn.git +master $ git reset --hard FETCH_HEAD $ git branch -M master }}}