diff options
| author | Mhd Sulhan <ms@kilabit.info> | 2015-09-05 18:30:59 +0700 |
|---|---|---|
| committer | Mhd Sulhan <ms@kilabit.info> | 2015-09-05 18:30:59 +0700 |
| commit | 9bdaec2b19e6e56df3dac2bbc9da6ca9683190d9 (patch) | |
| tree | e55f79241dcf865de2c771a6cefefafbcae16242 | |
| parent | 3a5bb4a38fa2a68418962b77f40f80fc579e94b4 (diff) | |
| download | arch-docker-9bdaec2b19e6e56df3dac2bbc9da6ca9683190d9.tar.xz | |
Add script to build Jenkins image with JRE 8.
| l--------- | arch-jenkins/Dockerfile | 1 | ||||
| -rw-r--r-- | arch-jenkins/Dockerfile.local | 14 | ||||
| -rw-r--r-- | arch-jenkins/Dockerfile.online | 12 | ||||
| -rwxr-xr-x | arch-jenkins/bootstrap.sh | 53 | ||||
| -rwxr-xr-x | arch-jenkins/build.sh | 127 | ||||
| -rwxr-xr-x | arch-jenkins/init.sh | 11 | ||||
| -rwxr-xr-x | arch-jenkins/run.sh | 5 |
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 "$@" |
