From e31e919e1acbab7f4f3cfe8a970edcfbf43da19f Mon Sep 17 00:00:00 2001 From: Holger Levsen Date: Fri, 16 Oct 2015 15:07:21 +0200 Subject: reproducible: first stab at setting up an archlinux build schroot --- bin/jenkins_node_wrapper.sh | 2 ++ bin/reproducible_arch_schroot_setup.sh | 64 ++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100755 bin/reproducible_arch_schroot_setup.sh (limited to 'bin') 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 +# 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." -- cgit v1.2.3-70-g09d2