Last updated: 2014-12-10 · 6 commits

Inskcape Jenkins Docker build

Please note that this is a very early draft.

Overview

There are several entities involved, a Host, and several Docker containers.

The separation in several containers brings isolation and flexibility.

The containers are meant to be deployed together, to form a build cluster. However, you can use the containers stand-alone, if you for instance just want a convenient way to try building for a different distro.

The host

The host runs several different docker containers, and is also responsible for shared disk space.

The Jenkins Docker

Jenkins is run as a separate docker container, that is linked to docker build slaves.

This separation is intended to give an overview of all inkscape related builds from a single interface.

The Jenkins conatiner manages the inkscape source tree, so it needs to have bzr installed.

The build slave dockers

The are at the moment 2 build slaves, one for Ubuntu and one for Fedora. These are controlled via ssha from the jenkins docker, via ssh.

details

shared

sudo mkdir /var/inkscape-jenkins sudo chown 1000:1000 var/inkscape-jenkins

the fedora build

docker build -t inkscapejenkins/fedora . docker run –name inkscapejenkinsfedora -v /var/inkscape-jenkins:/var/jenkinshome inkscapejenkins/fedora

the ubuntu build slave

See the document by Johan Engelen http://wiki.inkscape.org/wiki/index.php/Jenkins_server_setup for the base dependencies.

docker build -t inkscapejenkins/ubuntu . docker run –name inkscapejenkinsubuntu -v /var/inkscape-jenkins:/var/jenkinshome inkscapejenkins/ubuntu

the jenkins docker container

Our jenkins docker is based on the official one: https://registry.hub.docker.com/_/jenkins/

It must be launched after the build slaves.

docker build –tag=inkscapejenkins/jenkins .

docker run –name inkscape-jenkins -p 18080:8080 -v /var/inkscape-jenkins:/var/jenkinshome \ –link=inkscapejenkinsfedora:inkscapefedora \ –link=inkscapejenkinsubuntu:inkscapeubuntu \ jenkins

we need to add some plugins, but these should be added to the shared mount, so it cant be done during the image compiling.

Kubernetes

see inkscape-jenkins.json