Skip to content

Commit

Permalink
Generate a jenkins slave image for each docker API version
Browse files Browse the repository at this point in the history
  • Loading branch information
Camille Meulien committed May 28, 2016
1 parent d53d095 commit 3549261
Show file tree
Hide file tree
Showing 14 changed files with 333 additions and 14 deletions.
34 changes: 20 additions & 14 deletions docker/Dockerfile → docker/1.18/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,39 @@ FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=2.0 \
JENKINS_SWARM_JAR_PATH=/usr/share/jenkins

ENV JENKINS_SWARM_JAR=${JENKINS_SWARM_JAR_PATH}/swarm-client-${JENKINS_SWARM_VERSION}-jar-with-dependencies.jar
JENKINS_SWARM_JAR=/usr/share/jenkins/swarm-client-2.0-jar-with-dependencies.jar

RUN apt-get update \
&& apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update \
&& apt-get install -y docker-engine

RUN set -x \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p ${JENKINS_SWARM_JAR_PATH} \
&& chmod 755 ${JENKINS_SWARM_JAR_PATH} \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/${JENKINS_SWARM_VERSION}/swarm-client-${JENKINS_SWARM_VERSION}-jar-with-dependencies.jar
&& mkdir -p /usr/share/jenkins \
&& chmod 755 /usr/share/jenkins \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/swarm-client-2.0-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: 1.6" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
ENTRYPOINT ["/entrypoint.sh"]
8 changes: 8 additions & 0 deletions docker/1.18/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

if [[ $# -lt 1 ]] || [[ "$1" == "-"* ]]; then
echo Running java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
exec java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
fi

exec "$@"
40 changes: 40 additions & 0 deletions docker/1.19/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=2.0 \
JENKINS_SWARM_JAR=/usr/share/jenkins/swarm-client-2.0-jar-with-dependencies.jar

RUN apt-get update \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p /usr/share/jenkins \
&& chmod 755 /usr/share/jenkins \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/swarm-client-2.0-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: 1.7" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
8 changes: 8 additions & 0 deletions docker/1.19/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

if [[ $# -lt 1 ]] || [[ "$1" == "-"* ]]; then
echo Running java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
exec java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
fi

exec "$@"
40 changes: 40 additions & 0 deletions docker/1.20/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=2.0 \
JENKINS_SWARM_JAR=/usr/share/jenkins/swarm-client-2.0-jar-with-dependencies.jar

RUN apt-get update \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p /usr/share/jenkins \
&& chmod 755 /usr/share/jenkins \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/swarm-client-2.0-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: 1.8" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
8 changes: 8 additions & 0 deletions docker/1.20/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

if [[ $# -lt 1 ]] || [[ "$1" == "-"* ]]; then
echo Running java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
exec java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
fi

exec "$@"
40 changes: 40 additions & 0 deletions docker/1.21/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=2.0 \
JENKINS_SWARM_JAR=/usr/share/jenkins/swarm-client-2.0-jar-with-dependencies.jar

RUN apt-get update \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p /usr/share/jenkins \
&& chmod 755 /usr/share/jenkins \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/swarm-client-2.0-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: 1.9" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
8 changes: 8 additions & 0 deletions docker/1.21/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

if [[ $# -lt 1 ]] || [[ "$1" == "-"* ]]; then
echo Running java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
exec java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
fi

exec "$@"
40 changes: 40 additions & 0 deletions docker/1.22/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=2.0 \
JENKINS_SWARM_JAR=/usr/share/jenkins/swarm-client-2.0-jar-with-dependencies.jar

RUN apt-get update \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p /usr/share/jenkins \
&& chmod 755 /usr/share/jenkins \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/swarm-client-2.0-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: 1.10" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
8 changes: 8 additions & 0 deletions docker/1.22/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

if [[ $# -lt 1 ]] || [[ "$1" == "-"* ]]; then
echo Running java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
exec java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
fi

exec "$@"
40 changes: 40 additions & 0 deletions docker/1.23/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=2.0 \
JENKINS_SWARM_JAR=/usr/share/jenkins/swarm-client-2.0-jar-with-dependencies.jar

RUN apt-get update \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p /usr/share/jenkins \
&& chmod 755 /usr/share/jenkins \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/swarm-client-2.0-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: 1.11" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
8 changes: 8 additions & 0 deletions docker/1.23/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

if [[ $# -lt 1 ]] || [[ "$1" == "-"* ]]; then
echo Running java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
exec java ${JAVA_OPTS} -jar "${JENKINS_SWARM_JAR}" -fsroot $HOME "$@"
fi

exec "$@"
40 changes: 40 additions & 0 deletions docker/Dockerfile.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM debian:jessie

MAINTAINER Camille Meulien <cmeulien@heliostech.fr>

#
# Jenkins slave install
#
ENV HOME=/home/jenkins-slave \
JENKINS_SWARM_VERSION=<%= swarm_version %> \
JENKINS_SWARM_JAR=<%= swarm_jar_path %>/swarm-client-<%= swarm_version %>-jar-with-dependencies.jar

RUN apt-get update \
&& set -x \
&& apt-get install -y curl \
&& useradd -d ${HOME} -m jenkins-slave \
&& mkdir -p <%= swarm_jar_path %> \
&& chmod 755 <%= swarm_jar_path %> \
&& curl -sSLo ${JENKINS_SWARM_JAR} http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/<%= swarm_version %>/swarm-client-<%= swarm_version %>-jar-with-dependencies.jar

RUN env | grep -E "(JENKINS|JAVA)" > /etc/docker.properties

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh \
&& chown root:root /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

#
# Docker install
#

RUN apt-get install -y openjdk-7-jre-headless apt-transport-https ca-certificates \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
&& echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list \
&& apt-get update

RUN apt-get install -y docker-engine=$(apt-cache show docker-engine | grep -F "Version: <%= version[:docker] %>" | sort | tail -n1 | sed -r 's/Version: //')

USER jenkins-slave

VOLUME $HOME
25 changes: 25 additions & 0 deletions docker/Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
require 'erb'
require 'fileutils'

DockerApiVersions = [
{docker: "1.11", api: "1.23"},
{docker: "1.10", api: "1.22"},
{docker: "1.9", api: "1.21"},
{docker: "1.8", api: "1.20"},
{docker: "1.7", api: "1.19"},
{docker: "1.6", api: "1.18"},
]

task :generate do
tpl = ERB.new(File.read("Dockerfile.erb"))
swarm_version = "2.0"
swarm_jar_path = "/usr/share/jenkins"
DockerApiVersions.each do |version|
path = version[:api]
Dir.mkdir(path) unless Dir.exists?(path)
File.open(File.join(path, "Dockerfile"), "w") do |f|
f.write(tpl.result(binding))
end
FileUtils.cp("entrypoint.sh", path)
end
end

0 comments on commit 3549261

Please sign in to comment.