diff options
author | Holger Levsen <holger@layer-acht.org> | 2015-10-16 15:07:21 +0200 |
---|---|---|
committer | Holger Levsen <holger@layer-acht.org> | 2015-10-16 15:07:21 +0200 |
commit | e31e919e1acbab7f4f3cfe8a970edcfbf43da19f (patch) | |
tree | 4228d5b88ef733bfa5477e654f527498a5bd0b9b /bin | |
parent | 01f43b9f93b2d19e4dd1ab34d3126be9bcab224d (diff) | |
download | jenkins.debian.net-e31e919e1acbab7f4f3cfe8a970edcfbf43da19f.tar.xz |
reproducible: first stab at setting up an archlinux build schroot
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/jenkins_node_wrapper.sh | 2 | ||||
-rwxr-xr-x | bin/reproducible_arch_schroot_setup.sh | 64 |
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." |