From 83451a2f26a72cd291b35a0760c8d38345cb579e Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 15 Sep 2012 22:05:04 +0100 Subject: Separate release and CI builds: reprepro, pbuilder --- jenkinstool | 76 ++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 26 deletions(-) (limited to 'jenkinstool') diff --git a/jenkinstool b/jenkinstool index 99f32f9..06e5594 100755 --- a/jenkinstool +++ b/jenkinstool @@ -31,6 +31,10 @@ have_vcs_copy = ''' have_vcs_copy=yes ''' +no_vcs_copy = ''' +have_vcs_copy=no +''' + prelude = ''' set -eu @@ -118,6 +122,9 @@ artifacts="%(global.artifacts)s/${project}" project_artifacts="$artifacts/$project" project_url="%(global.artifacts-url)s/$project" +pbuilder_ci_tgz=/var/cache/pbuilder/ci.tgz +pbuilder_release_tgz=/var/cache/pbuilder/release.tgz + vcsworkspace="/var/lib/jenkins/workspace/${project}_localhost_vcs-update/" workdir="$(pwd)" if [ -e "$vcsworkspace" ] || [ "$have_vcs_copy" = yes ]] @@ -154,8 +161,10 @@ then exit 1 ;; esac + basetgz="$pbuilder_release_tgz" else debianversion="${version}-1.%(host.debian-dist)s" + basetgz="$pbuilder_ci_tgz" fi debianurl="%(global.artifacts-url)s/debian" @@ -351,32 +360,46 @@ reprepro -b "$base" --verbose export jc.set_description( 'Create or update pbuilder base.tgz on %(host.ssh-target)s') - jc.add_ssh_command(''' -basetgz=/var/cache/pbuilder/base.tgz -if [ -e "$basetgz" ] -then - if find $(dirname "$basetgz") -maxdepth 1 \ - -name $(basename "$basetgz") -mtime +%(global.pbuilder-max-age)s | - grep . + jc.add_ssh_command(no_vcs_copy + prelude + ''' + +echo "Creating/updating pbuilder tarballs." + +setup_pbuilder() +{ + local basetgz="$1" + local flavor="$2" + local dist="%(host.debian-dist)s" + + if [ -e "$basetgz" ] + then + if find $(dirname "$basetgz") -maxdepth 1 \ + -name $(basename "$basetgz") -mtime +%(global.pbuilder-max-age)s | + grep . + then + opts="--update --override-config" + else + echo "$basetgz is pretty new, keeping it" + return + fi + else + opts="--create" + fi + + if %(global.pretend)s then - opts="--update --override-config" + echo "PRETEND: pbuilder create/update $basetgz" else - echo "$basetgz is pretty new, keeping it" - exit + sudo pbuilder $opts \ + --basetgz "$basetgz" \ + --distribution "$dist" \ + --mirror "%(global.debian-mirror)s" \ + --othermirror \ + "deb %(global.artifacts-url)s/debian $dist$flavor main" fi -else - opts="--create" -fi -if %(global.pretend)s -then - echo "PRETEND: pbuilder create/update $basetgz" -else - sudo pbuilder $opts \ - --distribution "%(host.debian-dist)s" \ - --mirror "%(global.debian-mirror)s" \ - --othermirror \ - "deb %(global.artifacts-url)s/debian %(host.debian-dist)s main" -fi +} + +setup_pbuilder "$pbuilder_ci_tgz" "-ci" +setup_pbuilder "$pbuilder_release_tgz" "" ''') return jc @@ -632,8 +655,8 @@ then else untrusted="" fi -sudo pbuilder --update -sudo pbuilder --build --buildresult result $untrusted \ +sudo pbuilder --update --basetgz "$basetgz" +sudo pbuilder --build --basetgz "$basetgz" --buildresult result $untrusted \ --debbuildopts $binopt *.dsc dput jenkins "result/$archany_changes" cd "$curdir" @@ -678,7 +701,8 @@ rm -rf "$temp" jc.add_shell_command('find . -delete') def add_get_source_from_vcs(self, jc): - jc.add_shell_command(prelude + 'cp -a "$vcsworkspace/." .') + jc.add_shell_command( + no_vcs_copy + prelude + 'cp -a "$vcsworkspace/." .') class JenkinsTool(cliapp.Application): -- cgit v1.2.1