├── README.md ├── jenkins-slave-dind └── Dockerfile ├── jenkins-slave-heroku-psql ├── Dockerfile └── README.md ├── jenkins-slave-heroku ├── Dockerfile ├── README.md └── entrypoint.sh ├── jenkins-slave-imagemagick └── Dockerfile ├── jenkins-slave-jdk8-android ├── Dockerfile └── scripts │ ├── android-accept-licenses.sh │ └── android-wait-for-emulator.sh ├── jenkins-slave-jdk8-android_x86 ├── Dockerfile └── tools │ ├── android-accept-licenses.sh │ ├── android-wait-for-emulator.sh │ └── entrypoint.sh ├── jenkins-slave-jdk8-jhipster └── Dockerfile ├── jenkins-slave-jdk8-mvn └── Dockerfile ├── jenkins-slave-jdk8-node10-chrome └── Dockerfile ├── jenkins-slave-jdk8-nodejs-grunt-bower └── Dockerfile ├── jenkins-slave-jdk8-restx └── Dockerfile ├── jenkins-slave-jdk8-sbt-nodejs └── Dockerfile ├── jenkins-slave-jdk8-sbt └── Dockerfile ├── jenkins-slave-jdk8 └── Dockerfile └── jenkins-slave-jekyll ├── Dockerfile └── nodesource.list /README.md: -------------------------------------------------------------------------------- 1 | # Docker images for jenkins slaves 2 | 3 | Weuse a dockerized jenkins build machine with slaves provisioned automatically as docker images based on labels. 4 | 5 | This repository contains our different slaves base setup 6 | -------------------------------------------------------------------------------- /jenkins-slave-dind/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8 2 | 3 | MAINTAINER Benjamin Cousin "b.cousin@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | # Let's start with some basic stuff. 7 | RUN apt-get update -qq && apt-get install -qqy \ 8 | apt-transport-https \ 9 | ca-certificates \ 10 | lxc \ 11 | iptables \ 12 | curl \ 13 | sshpass \ 14 | make 15 | 16 | # Install Docker from Docker Inc. repositories. 17 | RUN echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list \ 18 | && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 \ 19 | && apt-get update -qq \ 20 | && apt-get install -qqy lxc-docker-1.7.1 21 | 22 | RUN curl -L https://github.com/docker/compose/releases/download/1.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose \ 23 | && chmod +x /usr/local/bin/docker-compose 24 | -------------------------------------------------------------------------------- /jenkins-slave-heroku-psql/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-heroku 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | 5 | RUN apt-get update && apt-get install -yqq postgresql-client && \ 6 | apt-get clean && \ 7 | rm -rf /var/lib/dpkg/info/* && \ 8 | rm -rf /var/lib/apt 9 | -------------------------------------------------------------------------------- /jenkins-slave-heroku-psql/README.md: -------------------------------------------------------------------------------- 1 | Slave with Heroku toolbelt and postgresql client 2 | 3 | Does not work yet with current docker-jenkins-slave plugin as it needs to export API_KEY with the proper Heroku credentials and the actual plugin version (0.8) does not allow to do so. Should be ok with 0.9 though. 4 | 5 | You need to launch the container using /usr/bin/entrypoint.sh and export API_KEY to your heroku api key -------------------------------------------------------------------------------- /jenkins-slave-heroku/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM evarga/jenkins-slave 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | RUN wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh 6 | RUN heroku plugins:install https://github.com/heroku/heroku-repo.git 7 | 8 | COPY entrypoint.sh /usr/bin/entrypoint.sh 9 | CMD "entrypoint.sh" 10 | -------------------------------------------------------------------------------- /jenkins-slave-heroku/README.md: -------------------------------------------------------------------------------- 1 | Slave with Heroku toolbelt 2 | 3 | Does not work yet with current docker-jenkins-slave plugin as it needs to export API_KEY with the proper Heroku credentials and the actual plugin version (0.8) does not allow to do so. Should be ok with 0.9 though. 4 | 5 | You need to launch the container using /usr/bin/entrypoint.sh and export API_KEY to your heroku api key -------------------------------------------------------------------------------- /jenkins-slave-heroku/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | echo HEROKU_API_KEY="$API_KEY" >> /etc/environment 3 | /usr/sbin/sshd -D -------------------------------------------------------------------------------- /jenkins-slave-imagemagick/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM evarga/jenkins-slave 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | RUN apt-get update && apt-get -y -q install imagemagick wget unzip git && apt-get clean 6 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | 5 | RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y --force-yes expect git wget libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 unzip && apt-get clean 6 | 7 | COPY scripts /opt/scripts 8 | 9 | # Install Android tools 10 | ENV SDK_VERSION "r25.2.5" 11 | RUN mkdir /opt/android-sdk-linux && cd /opt/android-sdk-linux && wget --output-document=tools-sdk.zip --quiet https://dl.google.com/android/repository/tools_${SDK_VERSION}-linux.zip && unzip tools-sdk.zip && rm -f tools-sdk.zip && chmod +x /opt/scripts/android-accept-licenses.sh && chown -R jenkins.jenkins /opt 12 | 13 | # Setup environment 14 | ENV ANDROID_HOME /opt/android-sdk-linux 15 | ENV PATH ${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools 16 | 17 | USER jenkins 18 | 19 | ENV BUILD_TOOLS_VERSION 25.0.3 20 | ENV ANDROID_VERSION 25 21 | RUN /opt/scripts/android-accept-licenses.sh "sdkmanager platform-tools \"build-tools;${BUILD_TOOLS_VERSION}\" \"platforms;android-${ANDROID_VERSION}\" \"add-ons;addon-google_apis-google-24\" \"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2\" \"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2\" \"system-images;android-${ANDROID_VERSION};google_apis;armeabi-v7a\" ndk-bundle" 22 | 23 | RUN which adb 24 | RUN which android 25 | 26 | USER root 27 | 28 | RUN echo ANDROID_HOME="$ANDROID_HOME" >> /etc/environment 29 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android/scripts/android-accept-licenses.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/expect -f 2 | 3 | set timeout 1800 4 | set cmd [lindex $argv 0] 5 | set licenses [lindex $argv 1] 6 | 7 | spawn {*}$cmd 8 | expect { 9 | "Accept? (y/N):" { 10 | exp_send "y\r" 11 | exp_continue 12 | } 13 | eof 14 | } 15 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android/scripts/android-wait-for-emulator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Originally written by Ralf Kistner , but placed in the public domain 4 | 5 | set +e 6 | 7 | bootanim="" 8 | failcounter=0 9 | until [[ "$bootanim" =~ "stopped" ]]; do 10 | bootanim=`adb -e shell getprop init.svc.bootanim 2>&1` 11 | echo "$bootanim" 12 | if [[ "$bootanim" =~ "not found" ]]; then 13 | let "failcounter += 1" 14 | if [[ $failcounter -gt 15 ]]; then 15 | echo "Failed to start emulator" 16 | exit 1 17 | fi 18 | fi 19 | sleep 1 20 | done 21 | echo "Done" 22 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android_x86/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | 5 | ENV PATH $PATH:$ANDROID_HOME/tools 6 | ENV PATH $PATH:$ANDROID_HOME/platform-tools 7 | RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y --force-yes expect git wget libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 qemu-kvm kmod && apt-get clean 8 | 9 | # Install Android SDK 10 | ENV SDK_VERSION "r24.4.1" 11 | RUN cd /opt && wget --output-document=android-sdk.tgz --quiet https://dl.google.com/android/android-sdk_${SDK_VERSION}-linux.tgz && tar xzf android-sdk.tgz && rm -f android-sdk.tgz && chown -R jenkins.jenkins android-sdk-linux 12 | 13 | # Setup environment 14 | ENV ANDROID_HOME /opt/android-sdk-linux 15 | ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools 16 | 17 | # Install sdk elements 18 | COPY tools /opt/tools 19 | ENV PATH ${PATH}:/opt/tools 20 | 21 | USER jenkins 22 | ENV BUILD_TOOLS_VERSION 23.0.3 23 | ENV ANDROID_VERSION 24 24 | RUN ["sh", "-c", "/opt/tools/android-accept-licenses.sh \"android update sdk --all --no-ui --filter platform-tools,build-tools-${BUILD_TOOLS_VERSION},android-${ANDROID_VERSION},addon-google_apis_x86-google-${ANDROID_VERSION},extra-android-support,extra-android-m2repository,extra-google-m2repository,sys-img-armeabi-v7a-android-${ANDROID_VERSION}\""] 25 | 26 | RUN which adb 27 | RUN which android 28 | 29 | USER root 30 | RUN usermod -a -G kvm jenkins 31 | RUN echo ANDROID_HOME="$ANDROID_HOME" >> /etc/environment 32 | 33 | CMD ["/opt/tools/entrypoint.sh"] 34 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android_x86/tools/android-accept-licenses.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/expect -f 2 | 3 | set timeout 1800 4 | set cmd [lindex $argv 0] 5 | set licenses [lindex $argv 1] 6 | 7 | spawn {*}$cmd 8 | expect { 9 | "Do you accept the license '*'*" { 10 | exp_send "y\r" 11 | exp_continue 12 | } 13 | eof 14 | } 15 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android_x86/tools/android-wait-for-emulator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Originally written by Ralf Kistner , but placed in the public domain 4 | 5 | set +e 6 | 7 | bootanim="" 8 | failcounter=0 9 | until [[ "$bootanim" =~ "stopped" ]]; do 10 | bootanim=`adb -e shell getprop init.svc.bootanim 2>&1` 11 | echo "$bootanim" 12 | if [[ "$bootanim" =~ "not found" ]]; then 13 | let "failcounter += 1" 14 | if [[ $failcounter -gt 15 ]]; then 15 | echo "Failed to start emulator" 16 | exit 1 17 | fi 18 | fi 19 | sleep 1 20 | done 21 | echo "Done" 22 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-android_x86/tools/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # If possible, create the /dev/kvm device node. 3 | 4 | set -e 5 | 6 | lsmod | grep '\' > /dev/null || { 7 | echo >&2 "KVM module not loaded; software emulation will be used" 8 | exit 1 9 | } 10 | 11 | # Create the kvm node (required --privileged) 12 | if [ ! -e /dev/kvm ]; then 13 | mknod /dev/kvm c 10 $(grep '\' /proc/misc | cut -f 1 -d' ') 14 | fi 15 | 16 | # authorize the kvm group to use KVM 17 | chown root:kvm /dev/kvm 18 | chmod g+rwx /dev/kvm 19 | /usr/sbin/sshd -D 20 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-jhipster/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8-mvn 2 | 3 | MAINTAINER Benjamin Cousin "b.cousin@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | # Install node.js from PPA 7 | RUN add-apt-repository ppa:chris-lea/node.js 8 | RUN apt-get update 9 | RUN apt-get -y install nodejs 10 | 11 | # Install bower and grunt 12 | RUN npm install -g bower grunt grunt-cli 13 | # Install local grunt for tests 14 | RUN npm install grunt 15 | 16 | # Install make g++ 17 | RUN apt-get -y install ruby ruby-dev make g++ 18 | 19 | # Install compass 20 | RUN gem install sass compass --no-ri --no-rdoc 21 | 22 | # Install imageMagick 23 | RUN apt-get -y install imagemagick 24 | 25 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-mvn/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8 2 | 3 | MAINTAINER Benjamin Cousin "b.cousin@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | # Install maven 7 | RUN apt-get -y install maven 8 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-node10-chrome/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8 2 | 3 | RUN apt-get update 4 | 5 | RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - 6 | RUN apt-get install -y nodejs 7 | 8 | RUN sh -c 'echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list' 9 | RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 10 | RUN apt-get update 11 | RUN apt-get install -y google-chrome-stable -------------------------------------------------------------------------------- /jenkins-slave-jdk8-nodejs-grunt-bower/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8-sbt-nodejs 2 | 3 | MAINTAINER Bollot Matthieu "m.bollot@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | RUN apt-get update && apt-get install -y --force-yes build-essential 7 | RUN npm -g install npm@2 8 | # we chmod directories node_modules and bower_components so that if we want to use volumes with a specific user we can write in them 9 | RUN mkdir /node_modules && mkdir /bower_components && chmod 777 /node_modules && chmod 777 /bower_components 10 | 11 | # Install Bower & Grunt 12 | RUN npm install -g bower grunt-cli 13 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-restx/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8-mvn 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | # Install node.js from PPA 7 | RUN apt-get update 8 | RUN apt-get -y install curl make g++ 9 | RUN apt-add-repository -y ppa:brightbox/ruby-ng 10 | RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - 11 | RUN apt-get update 12 | #RUN apt-get dist-upgrade -q -y 13 | #RUN cat /etc/debian_version 14 | RUN apt-get -y install nodejs ruby2.4 ruby2.4-dev 15 | RUN gem install sass compass --no-ri --no-rdoc 16 | # Install bower and grunt 17 | RUN npm install -g bower grunt grunt-cli 18 | # Install local grunt for tests 19 | RUN npm install grunt 20 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-sbt-nodejs/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8-sbt 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | RUN add-apt-repository ppa:chris-lea/node.js && apt-get update && apt-get -y install nodejs && apt-get clean 7 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8-sbt/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codetroopers/jenkins-slave-jdk8 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | 6 | # Download sbt-launch.jar 7 | RUN wget http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.5/sbt-launch.jar -O /usr/local/lib/sbt-launch.jar 8 | -------------------------------------------------------------------------------- /jenkins-slave-jdk8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM evarga/jenkins-slave 2 | 3 | MAINTAINER Cedric Gatay "c.gatay@code-troopers.com" 4 | ENV DEBIAN_FRONTEND noninteractive 5 | # install python-software-properties (so you can do add-apt-repository) 6 | RUN apt-get update 7 | RUN apt-get install -y -q software-properties-common 8 | 9 | RUN apt-get install -y -q git 10 | # install oracle java from PPA 11 | RUN add-apt-repository ppa:webupd8team/java -y 12 | RUN apt-get update 13 | RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections 14 | RUN apt-get -y install oracle-java8-installer && apt-get clean 15 | 16 | # Set oracle java as the default java 17 | RUN update-java-alternatives -s java-8-oracle 18 | ENV JAVA_HOME /usr/lib/jvm/java-8-oracle 19 | -------------------------------------------------------------------------------- /jenkins-slave-jekyll/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM evarga/jenkins-slave 2 | MAINTAINER Benjamin COUSIN "b.cousin@code-troopers.com" 3 | MAINTAINER bitard [DOT] michael [AT] gmail [DOT] com 4 | 5 | # Install ruby 6 | RUN apt-get update && \ 7 | apt-get install -y git ca-certificates apt-transport-https curl libfontconfig sudo ruby ruby-dev ruby-bundler && \ 8 | apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 9 | 10 | ADD nodesource.list /etc/apt/sources.list.d/nodesource.list 11 | 12 | RUN curl -k -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \ 13 | apt-get update && \ 14 | apt-get install -y nodejs && \ 15 | apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 16 | 17 | RUN cd /tmp && \ 18 | wget http://www.nasm.us/pub/nasm/releasebuilds/2.11.06/nasm-2.11.06.tar.gz && \ 19 | tar xvzf nasm-*.tar.gz && \ 20 | cd nasm-* && \ 21 | ./configure && \ 22 | make && \ 23 | sudo make install && \ 24 | rm -rf nasm-* 25 | 26 | RUN npm install -g gulp && \ 27 | npm install -g grunt && \ 28 | npm install -g grunt-cli && \ 29 | npm install -g bower 30 | 31 | RUN gem install jekyll rdiscount kramdown 32 | -------------------------------------------------------------------------------- /jenkins-slave-jekyll/nodesource.list: -------------------------------------------------------------------------------- 1 | deb https://deb.nodesource.com/node wheezy main 2 | deb-src https://deb.nodesource.com/node wheezy main 3 | --------------------------------------------------------------------------------