From 19b9a778a7587d4317aca766646c7ca06eb1773b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Erik=20Hedenstr=C3=B6m?= <erik@codemate.se>
Date: Thu, 13 Mar 2014 00:47:34 +0100
Subject: [PATCH] Added install scripts

---
 Dockerfile                            | 21 +++++++--------------
 install/00_jenkins_user.sh            | 23 +++++++++++++++++++++++
 install/10_build_essential.sh         |  6 ++++++
 install/20_docker.sh                  | 12 ++++++++++++
 install/30_ant.sh                     | 12 ++++++++++++
 install/40_maven.sh                   | 15 +++++++++++++++
 install/50_android.sh                 | 20 ++++++++++++++++++++
 install/60_erlang.sh                  | 24 ++++++++++++++++++++++++
 install/99_cleanup.sh                 |  5 +++++
 install/maven/settings.xml            | 17 +++++++++++++++++
 {ssh => install/ssh}/authorized_keys2 |  0
 {ssh => install/ssh}/config           |  0
 {ssh => install/ssh}/id_rsa           |  0
 {ssh => install/ssh}/id_rsa.pub       |  0
 14 files changed, 141 insertions(+), 14 deletions(-)
 create mode 100755 install/00_jenkins_user.sh
 create mode 100755 install/10_build_essential.sh
 create mode 100755 install/20_docker.sh
 create mode 100755 install/30_ant.sh
 create mode 100755 install/40_maven.sh
 create mode 100755 install/50_android.sh
 create mode 100755 install/60_erlang.sh
 create mode 100755 install/99_cleanup.sh
 create mode 100644 install/maven/settings.xml
 rename {ssh => install/ssh}/authorized_keys2 (100%)
 rename {ssh => install/ssh}/config (100%)
 rename {ssh => install/ssh}/id_rsa (100%)
 rename {ssh => install/ssh}/id_rsa.pub (100%)

diff --git a/Dockerfile b/Dockerfile
index fdb0887..d2b5734 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 0000000..0353e1c
--- /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 0000000..2f3df39
--- /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 0000000..8836745
--- /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 0000000..e4d8996
--- /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 0000000..1967a3a
--- /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 0000000..09bcfee
--- /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 0000000..9b756d5
--- /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 0000000..c1eea6b
--- /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 0000000..82edaf4
--- /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
-- 
GitLab