#summary This page documents how to setup a buildbot for Melange.
#labels Contents-Draft,Importance-Useful,Phase-Deploy

= Introduction =

Buildbot is an open source framework for automating software build, test run, and release. At Melange, we're using buildbot for these automations. The instructions are for a mint clean debian based machine, however due to various choices made in this page, the instructions shouldn't be a lot different for other distros. 

= Instructions =

{{{
  $ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
  $ sudo python get-pip.py‎
  $ sudo pip install virtualenv
  $ sudo apt-get update
  $ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev python-lxml python-dev
  $ cd; mkdir buildbot; cd buildbot;
  $ virtualenv venv; cd venv;  . bin/activate
  $ pip install buildbot buildbot-slave
  $ buildbot create-master master
  $ mv master/master.cfg.sample master/master.cfg

  # Let's see if the everything is in order as of now.
  $ buildbot master start; tail -f master/twistd.log
  # If the logs appear okay, we're good to go!
 
  # Let's create a slave, and see if it's running okay.
  $ cd ~/venv; buildslave create-slave slave localhost:9989 example-slave pass
  $ buildslave start slave; tail -f slave/twistd.log
  # Again, If the logs appear okay, we're good to go!
}}}

The next step involves copying the config files from `/configuration` directory in melange-project-root, to the buildbot machine's master folder - `~/venv/master/`
The file private.py has some fields, whose description is documented in the file itself. The fields are pretty straightforward, and the description about them in the same file should be sufficient. 

Now, let's restart the buildbot - 

{{{
  $ cd ~/venv/master
  $ buildbot restart
}}}

At this point, it might make sense to run these commands, just to check everything is in order - 

{{{
  $ buildbot master start; tail -f master/twistd.log
  $ buildslave start slave; tail -f slave/twistd.log
}}}