diff --git a/Dockerfile b/Dockerfile index fdb08873120f873d9f54d7d7bc3323d4613342dd..d2b57345860f5dbb4b566e163bbc7b7ad0ad7fde 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,24 +11,17 @@ ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_PRIORITY critical ENV DEBCONF_NOWARNINGS yes +# Fix locale +RUN locale-gen en_US.UTF-8 + # Install OpenSSH Server -RUN apt-get update RUN apt-get install -y openssh-server RUN mkdir -p /var/run/sshd -RUN echo "AllowUsers jenkins" >> /etc/ssh/sshd_config && echo "AllowAgentForwarding yes" >> /etc/ssh/sshd_config - -# Create Jenkins user -RUN useradd -m -d /var/lib/jenkins -s /bin/bash -p $(openssl passwd -1 A4TBYULaVEYstxT7dZLb) jenkins -RUN su - jenkins -c 'git config --global user.email "jenkins@codemate.se"' -RUN su - jenkins -c 'git config --global user.name "Jenkins"' -RUN echo "jenkins ALL=(ALL) ALL" > /etc/sudoers.d/jenkins -# Setup SSH for Jenkins user -ADD ssh /var/lib/jenkins/.ssh -RUN chmod 700 /var/lib/jenkins/.ssh && chmod 644 /var/lib/jenkins/.ssh/* && chmod 600 /var/lib/jenkins/.ssh/id_rsa && chown -R jenkins /var/lib/jenkins/.ssh - -# Fix locale -RUN locale-gen en_US.UTF-8 +# Run install scripts +ENV JENKINS_HOME /var/lib/jenkins +ADD install /tmp/install +RUN for INSTALLER in `ls /tmp/install/*.sh | sort -n`; do /bin/bash $INSTALLER; done && rm -rf /tmp/install # Start SSH Daemon EXPOSE 22 diff --git a/install/00_jenkins_user.sh b/install/00_jenkins_user.sh new file mode 100755 index 0000000000000000000000000000000000000000..0353e1cc3c834e904c5a36b4a32045457889ceba --- /dev/null +++ b/install/00_jenkins_user.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +# Create Jenkins user +useradd -m -d $JENKINS_HOME -s /bin/bash -p $(openssl passwd -1 A4TBYULaVEYstxT7dZLb) jenkins +su - jenkins -c 'git config --global user.email "jenkins@codemate.se"' +su - jenkins -c 'git config --global user.name "Jenkins"' +echo "jenkins ALL=(ALL) ALL" > /etc/sudoers.d/jenkins + +# Setup SSH +INSTALL=${0%/*} +cp -R $INSTALL/ssh $JENKINS_HOME/.ssh +chmod 700 $JENKINS_HOME/.ssh +chmod 644 $JENKINS_HOME/.ssh/config +chmod 600 $JENKINS_HOME/.ssh/id_rsa +chmod 644 $JENKINS_HOME/.ssh/id_rsa.pub +chown -R jenkins:jenkins $JENKINS_HOME/.ssh +echo "AllowUsers jenkins" >> /etc/ssh/sshd_config +echo "AllowAgentForwarding yes" >> /etc/ssh/sshd_config + +# Create tool dir +mkdir -p $JENKINS_HOME/tools diff --git a/install/10_build_essential.sh b/install/10_build_essential.sh new file mode 100755 index 0000000000000000000000000000000000000000..2f3df39b5451e0cd2a7e458b6abd5849d4c1786e --- /dev/null +++ b/install/10_build_essential.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +apt-get -y install build-essential checkinstall +apt-get -y install cvs subversion git-core mercurial diff --git a/install/20_docker.sh b/install/20_docker.sh new file mode 100755 index 0000000000000000000000000000000000000000..8836745bf0cece922a1b6a8ddff23147b3b4a496 --- /dev/null +++ b/install/20_docker.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +mkdir -p $JENKINS_HOME/tools/docker/bin +cd $JENKINS_HOME/tools/docker/bin +wget https://get.docker.io/builds/Linux/x86_64/docker-latest -O docker +chmod 755 docker + +DOCKER_HOME=$JENKINS_HOME/tools/docker +echo "export PATH=$DOCKER_HOME/bin:\$PATH" > /etc/profile.d/docker.sh +chmod 755 /etc/profile.d/docker.sh diff --git a/install/30_ant.sh b/install/30_ant.sh new file mode 100755 index 0000000000000000000000000000000000000000..e4d8996573af9367ec3ddce0d844655cd8dde390 --- /dev/null +++ b/install/30_ant.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +cd $JENKINS_HOME/tools + +curl -s http://apache.mirrors.spacedump.net/ant/binaries/apache-ant-1.9.3-bin.tar.gz | tar xzf - + +ANT_HOME=$JENKINS_HOME/tools/apache-ant-1.9.3 +echo "export ANT_HOME=$ANT_HOME" > /etc/profile.d/ant.sh +echo "export PATH=$ANT_HOME/bin:\$PATH" >> /etc/profile.d/ant.sh +chmod 755 /etc/profile.d/ant.sh diff --git a/install/40_maven.sh b/install/40_maven.sh new file mode 100755 index 0000000000000000000000000000000000000000..1967a3a53a8c460e3f2ad55b9f8daac737741f58 --- /dev/null +++ b/install/40_maven.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +cd $JENKINS_HOME/tools + +curl -s http://apache.mirrors.spacedump.net/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz | tar xzf - + +mkdir -p $JENKINS_HOME/.m2 +cp ${0%/*}/maven/settings.xml $JENKINS_HOME/.m2/settings.xml + +MAVEN_HOME=$JENKINS_HOME/tools/apache-maven-3.2.1 +echo "export MAVEN_HOME=$MAVEN_HOME" > /etc/profile.d/maven.sh +echo "export PATH=$MAVEN_HOME/bin:\$PATH" >> /etc/profile.d/maven.sh +chmod 755 /etc/profile.d/maven.sh diff --git a/install/50_android.sh b/install/50_android.sh new file mode 100755 index 0000000000000000000000000000000000000000..09bcfeeb7eb78fb12f124546a0ce0d8dde2d85e6 --- /dev/null +++ b/install/50_android.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +cd $JENKINS_HOME/tools + +apt-get -y install libc6-i386 lib32stdc++6 lib32gcc1 lib32tinfo5 lib32ncurses5 lib32z1 + +curl -s http://dl.google.com/android/android-sdk_r22.6-linux.tgz | tar xzf - + +( sleep 10 && while : +do + echo 'y' + sleep 2 +done ) | android-sdk-linux/tools/android update sdk -u -t platform-tools,build-tools-19.0.1,android-16,extra-android-support + +ANDROID_HOME=$JENKINS_HOME/tools/android-sdk-linux +echo "export ANDROID_HOME=$ANDROID_HOME" > /etc/profile.d/android.sh +echo "export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:\$PATH" >> /etc/profile.d/android.sh +chmod 755 /etc/profile.d/android.sh diff --git a/install/60_erlang.sh b/install/60_erlang.sh new file mode 100755 index 0000000000000000000000000000000000000000..9b756d59e7a60ff99180b97c6d03c3c8928beb20 --- /dev/null +++ b/install/60_erlang.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +cd $JENKINS_HOME/tools +exit 0 + +apt-get -y install libncurses5-dev openssl libssl-dev fop xsltproc unixodbc-dev libwxbase2.8 libwxgtk2.8-dev libqt4-opengl-dev + +curl -s http://www.erlang.org/download/otp_src_R16B03-1.tar.gz | tar xzf - +cd otp_src_R16B03-1 + +./configure --prefix=$JENKINS_HOME/tools/erlang/R16B03 && make && make install + +cd $JENKINS_HOME/tools + +rm -rf otp_src_R16B03-1 + +ERL_TOP=$JENKINS_HOME/tools/erlang/R16B03 +echo "export ERL_TOP=$ERL_TOP" > /etc/profile.d/erlang.sh +echo "export PATH=$ERL_TOP/bin:\$PATH" >> /etc/profile.d/erlang.sh +chmod 755 /etc/profile.d/erlang.sh +echo "TZQPJJRMMVKMHAWMVPMB" > $JENKINS_HOME/.erlang.cookie +chown -R jenkins:jenkins $JENKINS_HOME/.erlang.cookie diff --git a/install/99_cleanup.sh b/install/99_cleanup.sh new file mode 100755 index 0000000000000000000000000000000000000000..c1eea6b999398a4e12689227d6577b9d463c2d4d --- /dev/null +++ b/install/99_cleanup.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e # Exit on errors + +chown -R jenkins:jenkins $JENKINS_HOME diff --git a/install/maven/settings.xml b/install/maven/settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..82edaf47581876a945f3271abe40b99649d6137c --- /dev/null +++ b/install/maven/settings.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<settings> + + <mirrors> + <mirror> + <id>Nexus</id> + <name>Nexus Public Mirror</name> + <url>http://nexus:8081/nexus/content/groups/public</url> + <mirrorOf>central</mirrorOf> + </mirror> + </mirrors> + + <pluginGroups> + <pluginGroup>com.atlassian.maven.plugins</pluginGroup> + </pluginGroups> + +</settings> \ No newline at end of file diff --git a/ssh/authorized_keys2 b/install/ssh/authorized_keys2 similarity index 100% rename from ssh/authorized_keys2 rename to install/ssh/authorized_keys2 diff --git a/ssh/config b/install/ssh/config similarity index 100% rename from ssh/config rename to install/ssh/config diff --git a/ssh/id_rsa b/install/ssh/id_rsa similarity index 100% rename from ssh/id_rsa rename to install/ssh/id_rsa diff --git a/ssh/id_rsa.pub b/install/ssh/id_rsa.pub similarity index 100% rename from ssh/id_rsa.pub rename to install/ssh/id_rsa.pub