A few days ago, I did a fresh installation of my Jenkins build environment for my Ada projects (this was necessary after a disk crash on my OVH server). I took this opportunity to setup a FreeBSD build node. This article is probably incomplete but tends to collect a number of tips for the installation.
Virtual machine setup
The FreeBSD build node is running within a QEMU virtual machine. The choice of the host turns out to be important since not all versions of QEMU are able to run a FreeBSD/NetBSD or OpenBSD system. There is a bug in QEMU PCI emulation that prevents the NetBSD network driver to recognize the emulated network cards (See qemu-kvm 1.0 breaks openbsd, netbsd, freebsd). Ubuntu 12.04 and 12.10 provide a version of Qemu that has the problem. This is solved in Ubuntu 13.04, so this is the host linux distribution that I've installed.
For the virtual machine disk, I've setup some LVM partition on the host as follows:
sudo lvcreate -Z n -L 20G -n freebsd vg01
this creates a disk volume of 20G and label it freebsd
.
The next step is to download the FreeBSD Installation CD (I've installed the FreeBSD-10.0-RC2). To manage the virtual machines, one can use the virsh
command but the virt-manager
graphical front-end provides an easier setup.
sudo virt-manager
The virtual machine is configured with:
- CPU: x86_64
- Memory: 1048576
- Disk type: raw, source: /dev/vg01/freebsd
- Network card model: e1000
- Boot on the CD image
After the virtual machine starts, the FreeBSD installation proceeds (it was so simple that I took no screenshot at all).
Post installation
After the FreeBSD system is installed, it is almost ready to be used. Some additional packages are added by using the pkg install
command (which is very close to the Debian apt-get
command).
pkg install jed
pkg install sudo bash tcpdump
By default the /proc
is not setup and some application like the OpenJDK need to access it. Edit the file /etc/fstab
and add the following lines:
fdesc /dev/fd fdescfs rw 0 0
proc /proc procfs rw 0 0
and mount the new partitions with:
mount -a
GNAT installation
The FreeBSD repository provides some packages for Ada development. They are easily installed as follows:
pkg install gmake
pkg install gnat-aux-20130412_1 gprbuild-20120510
pkg install xmlada-4.4.0.0_1 zip-ada-45
pkg install aws-3.1.0.0
pkg install gdb-7.6.1_1
After the installation, change the path and setup the ADA_PROJECT_PATH
variables to be able to use gnatmake
:
export PATH=/usr/local/gcc-aux/bin:$PATH
export ADA_PROJECT_PATH=/usr/local/lib/gnat
Jenkins slave node installation
Jenkins uses a Java application that runs on each build node. It is necessary to install some Java JRE. To use subversion on the build node, we must make sure to install some 1.6 version since the 1.8 and 1.7 version have incompatibilities with the Jenkins master. The following packages are necessary:
pkg install openjdk6-jre-b28_7
pkg install subversion-1.6.23_2
Jenkins needs a user to connect to the build node. The user is created by the adduser command. The Jenkins user does not need any privilege.
Jenkins master will use SSH
to connect to the slave node. During the first connection, it installs the slave.jar
file which manages the launch of remote builds on the slave. For the SSH
connection, the password authentication is possible but I've setup a public key authentication that I've setup on the FreeBSD node by using ssh-copy-id
.
At this stage, the FreeBSD build node is ready to be added on the Jenkins master node (through the Jenkins UI Manage Jenkins/Manage Nodes).
MySQL Installation
The MySQL installation is necessary for some of my projects. This is easily done as follows:
pkg install mysql55-server-5.5.35 mysql55-client-5.5.35
Then add the following line to /etc/rc.conf
mysql_enable="YES"
and start the server manyally:
/usr/local/etc/rc.d/mysql-server onestart
The database tables are setup during the first start.
Other packages
Some packages that are necessary for some projets:
pkg install autoconf-2.69 curl-7.33.0_1
pkg install ImageMagick-nox11-6.8.0.7_3
Jenkins jobs
The jenkins master is now building 7 projects automatically for FreeBSD 10: FreeBSD Ada Jobs
Add a comment
To add a comment, you must be connected. Login