X-Git-Url: https://git.arvados.org/arvados-dev.git/blobdiff_plain/ff7b6fbcbca05e47fa226f8bef9f70de74e39024..5cac6f5fd28ab38fcc7279d5d7bd5f224d689d8a:/jenkins/run-build-packages-one-target.sh diff --git a/jenkins/run-build-packages-one-target.sh b/jenkins/run-build-packages-one-target.sh index 5451a4e..1d4249b 100755 --- a/jenkins/run-build-packages-one-target.sh +++ b/jenkins/run-build-packages-one-target.sh @@ -10,6 +10,10 @@ Syntax: Distribution to build packages for (default: debian7) --command Build command to execute (default: use built-in Docker image command) +--test-packages + Run package install test script "test-packages-$target.sh" +--debug + Output debug information (default: false) WORKSPACE=path Path to the Arvados source tree to build packages from @@ -32,7 +36,7 @@ if ! [[ -d "$WORKSPACE" ]]; then fi PARSEDOPTS=$(getopt --name "$0" --longoptions \ - help,target:,command: \ + help,debug,test-packages,target:,command: \ -- "" "$@") if [ $? -ne 0 ]; then exit 1 @@ -40,6 +44,7 @@ fi TARGET=debian7 COMMAND= +DEBUG= eval set -- "$PARSEDOPTS" while [ $# -gt 0 ]; do @@ -52,9 +57,15 @@ while [ $# -gt 0 ]; do --target) TARGET="$2"; shift ;; + --debug) + DEBUG=" --debug" + ;; --command) COMMAND="$2"; shift ;; + --test-packages) + test_packages=1 + ;; --) if [ $# -gt 1 ]; then echo >&2 "$0: unrecognized argument '$2'. Try: $0 --help" @@ -67,34 +78,48 @@ done set -e -if [[ "$COMMAND" != "" ]]; then - COMMAND="/usr/local/rvm/bin/rvm-exec default bash /jenkins/$COMMAND --target $TARGET" +if [[ -n "$test_packages" ]]; then + if [[ -n "$(find $WORKSPACE/packages/$TARGET -name *.rpm)" ]] ; then + createrepo $WORKSPACE/packages/$TARGET + fi + + if [[ -n "$(find $WORKSPACE/packages/$TARGET -name *.deb)" ]] ; then + (cd $WORKSPACE/packages/$TARGET + dpkg-scanpackages . 2> >(grep -v 'warning' 1>&2) | gzip -c > Packages.gz + ) + fi + + COMMAND="/jenkins/test-packages-$TARGET.sh" + IMAGE="arvados/package-test:$TARGET" +else + IMAGE="arvados/build:$TARGET" + if [[ "$COMMAND" != "" ]]; then + COMMAND="/usr/local/rvm/bin/rvm-exec default bash /jenkins/$COMMAND --target $TARGET$DEBUG" + fi fi -FINAL_EXITCODE=0 JENKINS_DIR=$(dirname "$(readlink -e "$0")") -run_docker() { - local tag=$1; shift - if docker run -v "$JENKINS_DIR:/jenkins" -v "$WORKSPACE:/arvados" \ - --env ARVADOS_DEBUG=1 "arvados/build:$tag" $COMMAND; then - # Success - nothing more to do. - true - else - FINAL_EXITCODE=$? - echo "ERROR: $tag build failed with exit status $FINAL_EXITCODE." >&2 - fi -} +if [[ -n "$test_packages" ]]; then + pushd "$JENKINS_DIR/package-test-dockerfiles" +else + pushd "$JENKINS_DIR/dockerfiles" +fi -# In case it's needed, build the container. This costs just a few -# seconds when the container already exist, so it's not a big deal to -# do it on each run. -cd "$JENKINS_DIR/dockerfiles" echo $TARGET cd $TARGET -time docker build -t arvados/build:$TARGET . -cd .. +time docker build --tag=$IMAGE . +popd -run_docker $TARGET +FINAL_EXITCODE=0 + +if docker run --rm -v "$JENKINS_DIR:/jenkins" -v "$WORKSPACE:/arvados" \ + --env ARVADOS_DEBUG=1 "$IMAGE" $COMMAND; then + # Success - nothing more to do. + true +else + FINAL_EXITCODE=$? + echo "ERROR: $tag build failed with exit status $FINAL_EXITCODE." >&2 +fi exit $FINAL_EXITCODE