Difference between revisions of "Buildbot Network"

From MythTV Official Wiki
Jump to: navigation, search
Line 11: Line 11:
 
* RHEL/Centos6 is not an option due to the Qt version being too old.
 
* RHEL/Centos6 is not an option due to the Qt version being too old.
  
=== Build Master ===
+
== Build Master ==
  
 
You can look at the progress of current builds or the history of the most recent builds by visiting [https://code.mythtv.org/buildbot BuildMaster]. I'd recommend either the waterfall or console pages.
 
You can look at the progress of current builds or the history of the most recent builds by visiting [https://code.mythtv.org/buildbot BuildMaster]. I'd recommend either the waterfall or console pages.
  
=== Setting up a build slave ===
+
== Setting up a build slave ==
  
 
Setting up a build slave is a relatively simple process. If you have a server capable of running a virtual machine or three, then offers of buildslaves are always welcome. Please contact the developers via IRC #mythtv on freenode.
 
Setting up a build slave is a relatively simple process. If you have a server capable of running a virtual machine or three, then offers of buildslaves are always welcome. Please contact the developers via IRC #mythtv on freenode.
  
==== Basic VM configuration ====
+
=== Basic VM configuration ===
  
 
* 1x CPU
 
* 1x CPU
Line 30: Line 30:
 
* 50Gb /home is sufficient to hold at least 3 different builds as well as the whole 10Gb ccache
 
* 50Gb /home is sufficient to hold at least 3 different builds as well as the whole 10Gb ccache
  
==== Installation ====
+
=== Installation ===
  
 
Install the operating system you are planning to use.
 
Install the operating system you are planning to use.
  
===== Automated Method (Recommended) =====
+
==== Automated Method (Recommended) ====
  
 
Install the ansible and git packages, then clone the MythTV ansible repository
 
Install the ansible and git packages, then clone the MythTV ansible repository
Line 46: Line 46:
 
This will install all the packages required for a Qt4 based build, as well as configuring ccache and setting up the startup script to start the buildslave when the server starts. All that is left to do is configure the buildslave. Continue from the step "Connecting to the build network"
 
This will install all the packages required for a Qt4 based build, as well as configuring ccache and setting up the startup script to start the buildslave when the server starts. All that is left to do is configure the buildslave. Continue from the step "Connecting to the build network"
  
===== Manual Method =====
+
==== Manual Method ====
  
 
Here is some information on setting up buildslaves by hand
 
Here is some information on setting up buildslaves by hand
Line 56: Line 56:
 
You should also create a buildslave user, and configure ccache to be allowed to use 10Gb of cache '''ccache -M 10G'''
 
You should also create a buildslave user, and configure ccache to be allowed to use 10Gb of cache '''ccache -M 10G'''
  
==== Connecting to the build network ====
+
=== Connecting to the build network ===
  
 
For this you will need to talk to the developers on IRC again. You should create a passwordless ssh key for your buildslave user, this will need to be added to allow the builder to checkout the code from our git repository.  
 
For this you will need to talk to the developers on IRC again. You should create a passwordless ssh key for your buildslave user, this will need to be added to allow the builder to checkout the code from our git repository.  
Line 66: Line 66:
 
* the hostname and port number of the buildmaster, i.e. buildbot.example.org:8007
 
* the hostname and port number of the buildmaster, i.e. buildbot.example.org:8007
  
==== Create the buildslave ====
+
=== Configure the buildslave ===
  
 
run the 'buildslave' command as follows
 
run the 'buildslave' command as follows
Line 80: Line 80:
 
   MythBuild: force build <buildslave_name> <message>
 
   MythBuild: force build <buildslave_name> <message>
  
==== Autostart on boot ====
+
=== Autostart on boot ===
  
 
''NOTE: Only required if you used the manual installation method''
 
''NOTE: Only required if you used the manual installation method''

Revision as of 12:18, 2 February 2015

Buildbot Network

stuarta 13:35, 3 March 2014 (UTC)

MythTV uses an extensive set of buildslaves, running different operating systems, different versions of Qt (Qt4 & Qt5) as well as different compilers. The aim of this is to validate all changesets do not affect our ability to build on the different platforms.

The intention is to ensure that MythTV will build and run on all the current distro flavours, and in particular on the long term stable variants. eg.

  • Debian Stable
  • Ubuntu LTS
  • Fedora
  • RHEL/Centos6 is not an option due to the Qt version being too old.

Build Master

You can look at the progress of current builds or the history of the most recent builds by visiting BuildMaster. I'd recommend either the waterfall or console pages.

Setting up a build slave

Setting up a build slave is a relatively simple process. If you have a server capable of running a virtual machine or three, then offers of buildslaves are always welcome. Please contact the developers via IRC #mythtv on freenode.

Basic VM configuration

  • 1x CPU
  • 2Gb RAM
  • 8Gb OS Disk
  • 50Gb /home

Notes:

  • 2GB of RAM is required as tv_rec.cpp can take an extremely long time to build and/or timeout the build when running only 1Gb ram
  • 50Gb /home is sufficient to hold at least 3 different builds as well as the whole 10Gb ccache

Installation

Install the operating system you are planning to use.

Automated Method (Recommended)

Install the ansible and git packages, then clone the MythTV ansible repository

   $ git clone https://github.com/MythTV/ansible.git

Then as root, change into the directory where the playbooks were checked out to and run

   # ansible-playbook -i hosts buildslaves.yml

This will install all the packages required for a Qt4 based build, as well as configuring ccache and setting up the startup script to start the buildslave when the server starts. All that is left to do is configure the buildslave. Continue from the step "Connecting to the build network"

Manual Method

Here is some information on setting up buildslaves by hand

You should also create a buildslave user, and configure ccache to be allowed to use 10Gb of cache ccache -M 10G

Connecting to the build network

For this you will need to talk to the developers on IRC again. You should create a passwordless ssh key for your buildslave user, this will need to be added to allow the builder to checkout the code from our git repository.

You will be provided with the following pieces of information

  • your buildslave's name
  • the password assigned to your buildslave
  • the hostname and port number of the buildmaster, i.e. buildbot.example.org:8007

Configure the buildslave

run the 'buildslave' command as follows

  # su - buildslave
  $ mkdir mythtv
  $ buildslave create-slave mythtv MASTERHOST:PORT SLAVENAME PASSWORD

Please make sure you edit info/host and info/admin in ~buildslave/mythtv so we know some information about your buildslave and your contact details

Then a build can be forced by talking to MythBuild on irc in #mythtv-commits

  MythBuild: force build <buildslave_name> <message>

Autostart on boot

NOTE: Only required if you used the manual installation method

Configuring the buildslave to autostart on system boot is a very simple step. Create a script ~/bin/start-buildslave.sh with the following contents

  #!/bin/bash
  cd ~/mythtv
  /usr/bin/buildslave stop
  exec /usr/bin/buildslave start

Notes:

  • The stop is not a mistake. The stop causes the buildslave to cleanup any old PID files that are present which would otherwise prohibit the buildslave from starting

Then chmod +x ~/bin/start-buildslave.sh.

Next edit crontab to start it at boot time. As the buildslave user run crontab -e and add the following line

 @reboot /home/buildslave/bin/start-buildslave.sh