X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3e1c43866e5b523c3f1d273c25942ad56dc66d3f..916ec66d0caeeb37983043810bea22e0bc41751f:/build/run-build-packages-one-target.sh diff --git a/build/run-build-packages-one-target.sh b/build/run-build-packages-one-target.sh index 900a5e25ef..378c9bbfa3 100755 --- a/build/run-build-packages-one-target.sh +++ b/build/run-build-packages-one-target.sh @@ -10,7 +10,7 @@ Syntax: WORKSPACE=/path/to/arvados $(basename $0) [options] --target - Distribution to build packages for (default: debian8) + Distribution to build packages for (default: debian9) --command Build command to execute (default: use built-in Docker image command) --test-packages @@ -57,7 +57,7 @@ if [ $? -ne 0 ]; then exit 1 fi -TARGET=debian8 +TARGET=debian9 COMMAND= DEBUG= @@ -74,6 +74,7 @@ while [ $# -gt 0 ]; do ;; --only-test) test_packages=1 + testing_one_package=1 packages="$2"; shift ;; --force-test) @@ -121,39 +122,40 @@ if [[ -n "$ARVADOS_BUILDING_VERSION" ]]; then fi if [[ -n "$test_packages" ]]; then - if [[ -n "$(find $WORKSPACE/packages/$TARGET -name '*.rpm')" ]] ; then - set +e - /usr/bin/which createrepo >/dev/null - if [[ "$?" != "0" ]]; then - echo >&2 - echo >&2 "Error: please install createrepo. E.g. sudo apt-get install createrepo" - echo >&2 - exit 1 - fi - set -e - createrepo $WORKSPACE/packages/$TARGET + if [[ -n "$(find $WORKSPACE/packages/$TARGET -name '*.rpm')" ]] ; then + set +e + /usr/bin/which createrepo >/dev/null + if [[ "$?" != "0" ]]; then + echo >&2 + echo >&2 "Error: please install createrepo. E.g. sudo apt-get install createrepo" + echo >&2 + exit 1 fi + set -e + 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) | tee Packages | gzip -c > Packages.gz - apt-ftparchive -o APT::FTPArchive::Release::Origin=Arvados release . > Release - ) - fi + if [[ -n "$(find $WORKSPACE/packages/$TARGET -name '*.deb')" ]] ; then + (cd $WORKSPACE/packages/$TARGET + dpkg-scanpackages . 2> >(grep -v 'warning' 1>&2) | tee Packages | gzip -c > Packages.gz + apt-ftparchive -o APT::FTPArchive::Release::Origin=Arvados release . > Release + ) + fi - COMMAND="/jenkins/package-testing/test-packages-$TARGET.sh" - IMAGE="arvados/package-test:$TARGET" + COMMAND="/jenkins/package-testing/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 + IMAGE="arvados/build:$TARGET" + if [[ "$COMMAND" != "" ]]; then + COMMAND="/usr/local/rvm/bin/rvm-exec default bash /jenkins/$COMMAND --target $TARGET$DEBUG" + fi fi JENKINS_DIR=$(dirname "$(readlink -e "$0")") if [[ -n "$test_packages" ]]; then pushd "$JENKINS_DIR/package-test-dockerfiles" + make "$TARGET/generated" else pushd "$JENKINS_DIR/package-build-dockerfiles" make "$TARGET/generated" @@ -217,10 +219,20 @@ if [[ -n "$test_packages" ]]; then continue fi fi + # If we're testing all packages, we should not error out on packages that don't exist. + # If we are testing one specific package only (i.e. --only-test was given), we should + # error out if that package does not exist. + if [[ -z "$testing_one_package" ]]; then + MATCH=`find ${WORKSPACE}/packages/ -regextype posix-extended -regex .*${TARGET}/$p.*\\(deb\\|rpm\\)` + if [[ "$MATCH" == "" ]]; then + # No new package has been built that needs testing + echo "Skipping $p test because no package file is available to test." + continue + fi + fi echo echo "START: $p test on $IMAGE" >&2 - # ulimit option can be removed when debian8 and ubuntu1404 are retired - if docker run --ulimit nofile=4096:4096 \ + if docker run \ --rm \ "${docker_volume_args[@]}" \ --env ARVADOS_DEBUG=$ARVADOS_DEBUG \ @@ -236,7 +248,9 @@ if [[ -n "$test_packages" ]]; then fi done - touch ${WORKSPACE}/packages/.last_test_${TARGET} + if [[ "$FINAL_EXITCODE" == "0" ]]; then + touch ${WORKSPACE}/packages/.last_test_${TARGET} + fi else echo echo "START: build packages on $IMAGE" >&2 @@ -247,8 +261,8 @@ else set +e mv -f ${WORKSPACE}/packages/${TARGET}/* ${WORKSPACE}/packages/${TARGET}/processed/ 2>/dev/null set -e - # Build packages. ulimit option can be removed when debian8 and ubuntu1404 are retired - if docker run --ulimit nofile=4096:4096 \ + # Build packages. + if docker run \ --rm \ "${docker_volume_args[@]}" \ --env ARVADOS_BUILDING_VERSION="$ARVADOS_BUILDING_VERSION" \