summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorHolger Levsen <holger@layer-acht.org>2015-10-16 15:07:21 +0200
committerHolger Levsen <holger@layer-acht.org>2015-10-16 15:07:21 +0200
commite31e919e1acbab7f4f3cfe8a970edcfbf43da19f (patch)
tree4228d5b88ef733bfa5477e654f527498a5bd0b9b /bin
parent01f43b9f93b2d19e4dd1ab34d3126be9bcab224d (diff)
downloadjenkins.debian.net-e31e919e1acbab7f4f3cfe8a970edcfbf43da19f.tar.xz
reproducible: first stab at setting up an archlinux build schroot
Diffstat (limited to 'bin')
-rwxr-xr-xbin/jenkins_node_wrapper.sh2
-rwxr-xr-xbin/reproducible_arch_schroot_setup.sh64
2 files changed, 66 insertions, 0 deletions
diff --git a/bin/jenkins_node_wrapper.sh b/bin/jenkins_node_wrapper.sh
index 54acbe03..623981ce 100755
--- a/bin/jenkins_node_wrapper.sh
+++ b/bin/jenkins_node_wrapper.sh
@@ -99,6 +99,8 @@ elif [[ "$*" =~ reproducible_netbsd ]] ; then
exec /srv/jenkins/bin/reproducible_netbsd.sh ; croak "Exec failed";
elif [[ "$*" =~ reproducible_freebsd ]] ; then
exec /srv/jenkins/bin/reproducible_freebsd.sh ; croak "Exec failed";
+elif [[ "$*" =~ reproducible_arch_schroot_setup ]] ; then
+ exec /srv/jenkins/bin/reproducible_arch_schroot_setup.sh ; croak "Exec failed";
elif [ "$*" = "some_jenkins_job_name" ] ; then
exec echo run any commands here ; croak "Exec failed";
fi
diff --git a/bin/reproducible_arch_schroot_setup.sh b/bin/reproducible_arch_schroot_setup.sh
new file mode 100755
index 00000000..023c8a1d
--- /dev/null
+++ b/bin/reproducible_arch_schroot_setup.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Copyright 2015 Holger Levsen <holger@layer-acht.org>
+# released under the GPLv=2
+
+#
+# downloads an arch bootstrap chroot archive, then turns it into an schroot,
+# then configures pacman and abs
+#
+
+DEBUG=true
+. /srv/jenkins/bin/common-functions.sh
+common_init "$@"
+
+bootstrap() {
+ echo "$(date -u) - downloading Archlinux bootstrap.tar.gz."
+ curl -O https://mirrors.kernel.org/archlinux/iso/2015.08.01/archlinux-bootstrap-2015.08.01-x86_64.tar.gz
+ tar xzf archlinux-bootstrap-2015.08.01-x86_64.tar.gz
+ mv root.x86_64/ $SCHROOT_TARGET
+ # write the schroot config
+ echo "$(date -u ) - writing schroot configuration for $TARGET."
+ sudo tee /etc/schroot/chroot.d/jenkins-"$TARGET" <<-__END__
+ [jenkins-$TARGET]
+ description=Jenkins schroot $TARGET
+ directory=$SCHROOT_BASE/$TARGET
+ type=directory
+ root-users=jenkins
+ source-root-users=jenkins
+ union-type=aufs
+ __END__
+ # finally, put it in place
+ mv $SCHROOT_TARGET $SCHROOT_BASE/$TARGET
+}
+
+cleanup() {
+ if [ -d $SCHROOT_TARGET ]; then
+ sudo rm -rf --one-file-system $SCHROOT_TARGET || ( echo "Warning: $SCHROOT_TARGET could not be fully removed on forced cleanup." ; ls $SCHROOT_TARGET -la )
+ fi
+ rm -f $TMPLOG
+}
+
+SCHROOT_TARGET=$(mktemp -d -p $SCHROOT_BASE/ schroot-install-$TARGET-XXXX)
+trap cleanup INT TERM EXIT
+TARGET=reproducible-arch
+bootstrap
+trap - INT TERM EXIT
+
+ROOTCMD="schroot --directory /tmp -c source:jenkins-reproducible-arch -u root --"
+USERCMD="schroot --directory /tmp -c source:jenkins-reproducible-arch -u jenkins --"
+
+# configure pacman + abs
+$ROOTCMD pacman-key --init
+$ROOTCMD pacman-key --populate archlinux
+echo 'Server = http://mirror.one.com/archlinux/$repo/os/$arch' | sudo tee -a $SCHROOT_BASE/$TARGET/etc/pacman.d/mirrorlist
+$ROOTCMD pacman -Syu --noconfirm
+$ROOTCMD pacman -S --noconfirm base-devel devtools abs
+$ROOTCMD abs
+
+# configure jenkins user
+$USERCMD mkdir /var/lib/jenkins
+$USERCMD chown jenkins:jenkins /var/lib/jenkins
+$USERCMD gpg --recv-keys 0x091AB856069AAA1C
+
+echo "schroot $TARGET set up successfully in $SCHROOT_BASE/$TARGET - exiting now."