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