aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMhd Sulhan <ms@kilabit.info>2015-09-05 18:30:59 +0700
committerMhd Sulhan <ms@kilabit.info>2015-09-05 18:30:59 +0700
commit9bdaec2b19e6e56df3dac2bbc9da6ca9683190d9 (patch)
treee55f79241dcf865de2c771a6cefefafbcae16242
parent3a5bb4a38fa2a68418962b77f40f80fc579e94b4 (diff)
downloadarch-docker-9bdaec2b19e6e56df3dac2bbc9da6ca9683190d9.tar.xz
Add script to build Jenkins image with JRE 8.
l---------arch-jenkins/Dockerfile1
-rw-r--r--arch-jenkins/Dockerfile.local14
-rw-r--r--arch-jenkins/Dockerfile.online12
-rwxr-xr-xarch-jenkins/bootstrap.sh53
-rwxr-xr-xarch-jenkins/build.sh127
-rwxr-xr-xarch-jenkins/init.sh11
-rwxr-xr-xarch-jenkins/run.sh5
7 files changed, 223 insertions, 0 deletions
diff --git a/arch-jenkins/Dockerfile b/arch-jenkins/Dockerfile
new file mode 120000
index 0000000..bd8469a
--- /dev/null
+++ b/arch-jenkins/Dockerfile
@@ -0,0 +1 @@
+Dockerfile.online \ No newline at end of file
diff --git a/arch-jenkins/Dockerfile.local b/arch-jenkins/Dockerfile.local
new file mode 100644
index 0000000..51d1541
--- /dev/null
+++ b/arch-jenkins/Dockerfile.local
@@ -0,0 +1,14 @@
+FROM sulhan/arch-base:latest
+MAINTAINER Sulhan <ms@kilabit.info>
+
+EXPOSE 8090
+VOLUME /var/cache/jenkins
+
+COPY bootstrap.sh /
+COPY init.sh /
+COPY *.db /var/lib/pacman/sync/
+COPY *.xz /var/cache/pacman/pkg/
+
+RUN exec /bootstrap.sh
+
+CMD ["/init.sh"]
diff --git a/arch-jenkins/Dockerfile.online b/arch-jenkins/Dockerfile.online
new file mode 100644
index 0000000..5d5a6e8
--- /dev/null
+++ b/arch-jenkins/Dockerfile.online
@@ -0,0 +1,12 @@
+FROM sulhan/arch-base:latest
+MAINTAINER Sulhan <ms@kilabit.info>
+
+EXPOSE 8090
+VOLUME /var/cache/jenkins
+
+COPY bootstrap.sh /
+COPY init.sh /
+
+RUN exec /bootstrap.sh
+
+CMD ["/init.sh"]
diff --git a/arch-jenkins/bootstrap.sh b/arch-jenkins/bootstrap.sh
new file mode 100755
index 0000000..143fec2
--- /dev/null
+++ b/arch-jenkins/bootstrap.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+PACKAGES_DEPS="git jre8-openjdk"
+PACKAGES="jenkins"
+
+strip_bin() {
+ find /usr/bin -type f \( -perm -0100 \) -print |
+ xargs file |
+ sed -n '/executable .*not stripped/s/: TAB .*//p' |
+ xargs -rt strip --strip-unneeded
+}
+
+strip_lib() {
+ find /usr/lib -type f \( -perm -0100 \) -print |
+ xargs file |
+ sed -n '/executable .*not stripped/s/: TAB .*//p' |
+ xargs -rt strip --strip-unneeded
+}
+
+clean_common() {
+ echo "==> cleaning ..."
+ rm -rf /usr/share/gtk-doc/*
+ rm -rf /usr/share/git-gui/*
+ rm -rf /usr/share/hwdata/*
+ rm -rf /usr/share/icons/*
+ rm -rf /usr/share/git/*
+ rm -rf /usr/share/X11/*
+ rm -rf /usr/share/kbd/*
+ rm -rf /usr/share/perl5/*
+
+ strip_bin
+ strip_lib
+ rm -rf /usr/share/doc/*
+ rm -rf /usr/share/licenses/*
+ rm -rf /usr/share/locale/*
+ rm -rf /usr/share/man/*
+ rm -rf /usr/share/info/*
+ rm -rf /var/cache/pacman/pkg/*
+ rm -rf /var/log/*
+ rm -f /bootstrap.sh
+}
+
+do_install() {
+ pacman -S --noconfirm $PACKAGES_DEPS
+ pacman -S --noconfirm $PACKAGES
+ return $?
+}
+
+do_install
+while [ $? -ne 0 ]; do do_install; done
+
+## cleaning ...
+clean_common
diff --git a/arch-jenkins/build.sh b/arch-jenkins/build.sh
new file mode 100755
index 0000000..6b95a45
--- /dev/null
+++ b/arch-jenkins/build.sh
@@ -0,0 +1,127 @@
+#!/bin/sh
+
+##
+## Maintainer: Sulhan <ms@kilabit.info>
+##
+## Script to build nodejs image using `sulhan/arch-base` as base system.
+##
+## Usage
+## ./build.sh [local|clean]
+##
+## If no parameter is given, it will sync and install package from container.
+##
+## local
+## update host db and packages first and copy the db and packages to
+## container.
+##
+
+PACKAGES="git jre8-openjdk jenkins"
+IMAGE_NAME="sulhan/arch-jenkins"
+
+echo ""
+echo "==> building image for jenkins CI"
+echo ""
+
+
+clean() {
+ rm -f *.db
+ rm -f *.xz
+ rm -f Dockerfile
+ ln -s Dockerfile.online Dockerfile
+ exit $1
+}
+
+docker_build() {
+ docker build --force-rm -t $IMAGE_NAME .
+ s=$?
+ clean $s
+}
+
+if [[ $# = 0 ]]; then
+ echo "==> Building docker image online ..."
+ docker_build
+fi
+
+if [[ -z $1 || $1 != local ]]; then
+ echo "Usage: ./build.sh [online]"
+ exit 1
+fi
+
+if [[ $1 = "clean" ]]; then
+ clean
+fi
+
+echo "==> Building docker image using local db and packages ..."
+
+## always make sure local db and packages up to date.
+sudo pacman -Syw --noconfirm --needed $PACKAGES
+sudo pacman -Sc --noconfirm
+
+cp /var/lib/pacman/sync/*.db ./
+
+cp /var/cache/pacman/pkg/jre8-openjdk-headless-* \
+ /var/cache/pacman/pkg/jre8-openjdk-8.* \
+ /var/cache/pacman/pkg/nspr-* \
+ /var/cache/pacman/pkg/sqlite-* \
+ /var/cache/pacman/pkg/nss-* \
+ /var/cache/pacman/pkg/glib2-* \
+ /var/cache/pacman/pkg/cracklib-* \
+ /var/cache/pacman/pkg/libtirpc-* \
+ /var/cache/pacman/pkg/pambase-* \
+ /var/cache/pacman/pkg/pam-* \
+ /var/cache/pacman/pkg/shadow-* \
+ /var/cache/pacman/pkg/lz4-* \
+ /var/cache/pacman/pkg/libsystemd-* \
+ /var/cache/pacman/pkg/util-linux-* \
+ /var/cache/pacman/pkg/java-runtime-common-* \
+ /var/cache/pacman/pkg/xcb-proto-* \
+ /var/cache/pacman/pkg/xproto-* \
+ /var/cache/pacman/pkg/libxdmcp-* \
+ /var/cache/pacman/pkg/libxau-* \
+ /var/cache/pacman/pkg/libxcb-* \
+ /var/cache/pacman/pkg/kbproto-* \
+ /var/cache/pacman/pkg/libx11-* \
+ /var/cache/pacman/pkg/xextproto-* \
+ /var/cache/pacman/pkg/libxext-* \
+ /var/cache/pacman/pkg/libice-* \
+ /var/cache/pacman/pkg/libsm-* \
+ /var/cache/pacman/pkg/libxt-* \
+ /var/cache/pacman/pkg/libxmu-* \
+ /var/cache/pacman/pkg/xorg-xset-* \
+ /var/cache/pacman/pkg/xdg-utils-* \
+ /var/cache/pacman/pkg/hicolor-icon-theme-* \
+\
+ /var/cache/pacman/pkg/jenkins-* \
+ /var/cache/pacman/pkg/libdbus-* \
+ /var/cache/pacman/pkg/dbus-* \
+ /var/cache/pacman/pkg/iptables-* \
+ /var/cache/pacman/pkg/kbd-* \
+ /var/cache/pacman/pkg/kmod-* \
+ /var/cache/pacman/pkg/hwids-* \
+ /var/cache/pacman/pkg/libseccomp-* \
+ /var/cache/pacman/pkg/systemd-* \
+ /var/cache/pacman/pkg/libusb-* \
+ /var/cache/pacman/pkg/libpng-* \
+ /var/cache/pacman/pkg/graphite-* \
+ /var/cache/pacman/pkg/harfbuzz-* \
+ /var/cache/pacman/pkg/freetype2-* \
+ /var/cache/pacman/pkg/fontconfig-* \
+ /var/cache/pacman/pkg/xorg-fonts-encodings-* \
+ /var/cache/pacman/pkg/libfontenc-* \
+ /var/cache/pacman/pkg/xorg-mkfontscale-* \
+ /var/cache/pacman/pkg/xorg-mkfontdir-* \
+ /var/cache/pacman/pkg/ttf-dejavu-* \
+ /var/cache/pacman/pkg/libjpeg-turbo-* \
+ /var/cache/pacman/pkg/libtiff-* \
+ /var/cache/pacman/pkg/avahi-* \
+ /var/cache/pacman/pkg/libcups-* \
+\
+ /var/cache/pacman/pkg/git-* \
+ /var/cache/pacman/pkg/db-* \
+ /var/cache/pacman/pkg/perl-5.* \
+ /var/cache/pacman/pkg/perl-error-* \
+ ./
+
+rm -f Dockerfile
+ln -s Dockerfile.local Dockerfile
+docker_build
diff --git a/arch-jenkins/init.sh b/arch-jenkins/init.sh
new file mode 100755
index 0000000..ae8bffb
--- /dev/null
+++ b/arch-jenkins/init.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+JENKINS_DATA=/var/cache/jenkins
+
+if [ -f $JENKINS_DATA/jenkins ]; then
+ source $JENKINS_DATA/jenkins
+else
+ source /etc/conf.d/jenkins
+fi
+
+eval $JENKINS_COMMAND_LINE
diff --git a/arch-jenkins/run.sh b/arch-jenkins/run.sh
new file mode 100755
index 0000000..13eb4d4
--- /dev/null
+++ b/arch-jenkins/run.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+JENKINS_DATA=$(pwd)/jenkins
+
+docker run --rm -v $JENKINS_DATA:/var/cache/jenkins -p 8090:8090 -it sulhan/arch-jenkins "$@"