SolengTech‎ > ‎Open Source‎ > ‎

HowTo Provision an Automated Build/Test Server

Provisioning a build server for continuous integration, we need to install basic development packages, source code management, and an execution server called Jenkins.

Provisioning a test server, we need some new packages under development at

Our build targets are:
  • OpenEmbedded/OE-Core (Poky)
  • LTIB
  • Buildroot
  • CrossTools

Fedora/Redhat/CentOS (yum/rpm based systems)

Build Automation

## LAMP -
# Apache and MySql - set up with new root password.
yum -y install httpd httpd-devel mysql mysql-server mysql-devel webalizer
yum -y install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml
# Edit the /etc/httpd/conf.d/phpmyadmin.conf and allow for users behind firewall.
yum -y install phpmyadmin

# Enable the servers for reboot
chkconfig httpd on
chkconfig mysqld on

# Jenkins CI -
yum -y install java-*-openjdk
wget -O /etc/yum.repos.d/jenkins.repo
rpm --import
yum -y install jenkins
service jenkins restart
# You should connect, and after the GET see some text that has jenkins-ci in it.
sleep 5
telnet localhost 8080

# Set up a memory caching server, can cause SELinux complaints.
# /etc/sysconfig/memcached to configure if needed.
yum -y install libmemcached memcached
yum -y install php-ZendFramework-Cache-Backend-Memcached php-pecl-memcached
yum -y install python-memcached perl-Cache-Memcached
# php-pecl-memcache
For those confuse about the memcached extension and the memcache extension,
# the short story is that both of them are clients of memcached server,
# and the memcached extension offer more features than the memcache extension...joelhy

service memcached start
chkconfig memcached on

# Set up MySql with new root password.
service mysqld restart
telnet localhost 3306

# Probably should change newpassword?
read newpassword

/usr/bin/mysqladmin -u root password '$newpassword'
# If you don't have a dns name, use your: ip addr show
/usr/bin/mysqladmin -u root -h "`hostname`" password '$newpassword'

# You can test the MySQL daemon with (mysql-test)
yum -y install mysql-test
pushd /usr/share/mysql-test/mysql-test-run;popd

## Servers and Such
# Mediawiki for a front page, dashboard, etc. This will pull in a default mediawiki.
yum -y install mediawiki-wikicalendar

# Basic Build Packages
# For RedHat and CentOS, Add the current EPEL repo.
wget`uname -m`/epel-release-5-4.noarch.rpm
# or
wget`uname -m`/epel-release-6-5.noarch.rpm
rpm -Uvh epel-release-*.rpm

# Basics for building
yum -y groupinstall "Development tools"

# OpenEmbedded
sudo yum install gettext-devel expat-devel curl-devel zlib-devel openssl-devel
# SystemBuilder internal developer builds
yum -y install curl git
# OE BitBake likes these.
yum -y install gcc-c++ diffstat texi2html python-devel pysqlite help2man
# OE Recommended for CentOS 5.4
yum -y install bison coreutils cvs docbook-utils gawk git-core python quilt rpmlib sed subversion tetex texinfo unzip wget
yum -y install m4 make wget curl ftp cvs subversion tar bzip2 gzip unzip python-psyco perl texinfo tetex diffstat openjade
yum -y install docbook-style-dsssl docbook-style-xsl docbook-dtds docbook-utils sed bison bc glibc-devel binutils pcre pcre-devel
# OE recommended for Fedora 13-15
yum -y yum install python m4 make wget curl ftp cvs subversion tar bzip2 gzip unzip \
python-psyco perl texinfo texi2html diffstat openjade docbook-style-dsssl \
docbook-style-xsl docbook-dtds docbook-utils sed bison bc glibc-devel glibc-static \
gcc binutils pcre pcre-devel git quilt groff linuxdoc-tools patch linuxdoc-tools \
gcc-c++ help2man perl-ExtUtils-MakeMaker tcl-devel gettext ccache chrpath cmake ncurses \
# SB Miscellaneous
yum -y install redhat-lsb
# OE Miscellaneous
yum -y install fakeroot
# OE-Core
yum -y install hg
# CodeBench GDB
yum -y install ncurses-libs.i686
# 64-bit Host
yum install glibc-devel.i686 ncurses-libs.i686
yum -y install glibc-static
# CodeBench IDE 64-bit Host
yum -y install gtk2-devel.i686 gtk-nodoka-engine.i686 \
libcanberra.i686 libcanberra-gtk2.i686 PackageKit-gtk-module.i686 \
# LTIB packages for rpm based systems.
yum -y install glibc.i686 glibc-devel.i686 sudo zlib rpm rpm-build rpm-devel ncurses ncurses-devel zlib-devel tcl glib2-devel
# Test Frameworks
yum -y install MySQL-python

Debian/Ubuntu (dpkg/deb based systems)

# Basics for building
apt-get install build-essentials