BSDCan2017 - 0722d

BSDCan 2017
The Technical BSD Conference

Li-Wen Hsu
Day Talks #1 - 9 June - 2017-06-09
Room DMS 1160
Start time 14:45
Duration 01:00
ID 817
Event type Lecture
Track System Administration
Language used for presentation English

Continuous Integration of The FreeBSD Project

Build daemon with daemon

FreeBSD’s continuous integration project started in the late 2013. We use Jenkins automation server to build our continuous integration system. It monitors the svn repository for new commits and triggers a new build of it. In each build, the build machine compiles the latest code, creates disk image and creates a virtual machine to run test suite. In the meantime, we collect the compiler warnings and perform some further checks like clang analyzer. All these information are published to the developers and users to improve the quality of the FreeBSD project. In this talk, we describe the details of the system implementation.

Continuous integration is an important and common practice of modern software engineering. The benefits of CI are developers can know the conflicts and bugs as earlier as possible, this reduces the resource consumed for resolving them later. Also, the status of the project is clearer and it is easier to estimate project progress.

There are many software designed for various CI needs, among them, the most popular one is Jenkins, an open source automation server written in Java. We use Jenkins as the main component, along with some other daemons like Pure-FTPd, to build FreeBSD project’s CI system. We developed a set scripts to setup a clean and secure build environment with jails for each build. We also provide job templates for making developers to submit their jobs easier. Finally, we introduced artifact server, to keep the artifacts created in each stage of a build pipeline. Users and downstream developers can fetch these files for doing further testing.

We will go through the history of FreeBSD’s CI work, and discuss how we we setup the latest CI system of the FreeBSD project, in which new build triggered by changes in the version control system, then the system does tests and publishes results. We'll explain the underlaying mechanisms and how we use interesting Jenkins plugins or other tools to make it more useful.

The FreeBSD CI system is at .