X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/37c46ca294ce95242ac424c8375a130d783f6d1e..2e74236fa27822addd856f194befc28382990ce0:/build/run-build-docker-jobs-image.sh diff --git a/build/run-build-docker-jobs-image.sh b/build/run-build-docker-jobs-image.sh index 7d7e1fc8ab..a7e3ee5466 100755 --- a/build/run-build-docker-jobs-image.sh +++ b/build/run-build-docker-jobs-image.sh @@ -9,7 +9,7 @@ function usage { echo >&2 echo >&2 "$0 options:" echo >&2 " -t, --tags version tag for docker" - echo >&2 " -r, --repo Arvados package repot to use: dev, testing, stable (default: dev)" + echo >&2 " -r, --repo Arvados package repo to use: dev (default), testing, stable" echo >&2 " -u, --upload Upload the images (docker push)" echo >&2 " --no-cache Don't use build cache" echo >&2 " -h, --help Display this help and exit" @@ -22,7 +22,7 @@ REPO=dev # NOTE: This requires GNU getopt (part of the util-linux package on Debian-based distros). TEMP=`getopt -o hut:r: \ - --long help,upload,no-cache,tags,repo: \ + --long help,upload,no-cache,tags:,repo: \ -n "$0" -- "$@"` if [ $? != 0 ] ; then echo "Use -h for help"; exit 1 ; fi @@ -135,42 +135,51 @@ timer_reset cd "$WORKSPACE" if [[ -z "$ARVADOS_BUILDING_VERSION" ]] && ! [[ -z "$version_tag" ]]; then - ARVADOS_BUILDING_VERSION="$version_tag" - ARVADOS_BUILDING_ITERATION="1" + export ARVADOS_BUILDING_VERSION="$version_tag" + export ARVADOS_BUILDING_ITERATION="1" fi -python_sdk_ts=$(cd sdk/python && timestamp_from_git) -cwl_runner_ts=$(cd sdk/cwl && timestamp_from_git) +# This defines python_sdk_version and cwl_runner_version with python-style +# package suffixes (.dev/rc) +calculate_python_sdk_cwl_package_versions -python_sdk_version=$(cd sdk/python && nohash_version_from_git 0.1) -cwl_runner_version=$(cd sdk/cwl && nohash_version_from_git 1.0) - -if [[ $python_sdk_ts -gt $cwl_runner_ts ]]; then - cwl_runner_version=$(cd sdk/python && nohash_version_from_git 1.0) +if [[ -z "$cwl_runner_version" ]]; then + echo "ERROR: cwl_runner_version is empty"; + exit 1 fi echo cwl_runner_version $cwl_runner_version python_sdk_version $python_sdk_version +# For development and release candidate packages, the OS package has a "~dev" +# or "~rc" suffix, but Python requires a ".dev" or "rc" suffix. +# +# Arvados-cwl-runner will be expecting the Python-compatible version string +# when it tries to pull the Docker image, so we use that to tag the Docker +# image. +# +# The --build-arg docker invocation arguments are expecting the OS package +# version. +python_sdk_version_os=$(echo -n $python_sdk_version | sed s/.dev/~dev/g | sed s/rc/~rc/g) +cwl_runner_version_os=$(echo -n $cwl_runner_version | sed s/.dev/~dev/g | sed s/rc/~rc/g) + if [[ "${python_sdk_version}" != "${ARVADOS_BUILDING_VERSION}" ]]; then - python_sdk_version="${python_sdk_version}-1" + python_sdk_version_os="${python_sdk_version_os}-1" else - python_sdk_version="${ARVADOS_BUILDING_VERSION}-${ARVADOS_BUILDING_ITERATION}" + python_sdk_version_os="${ARVADOS_BUILDING_VERSION}-${ARVADOS_BUILDING_ITERATION}" fi -cwl_runner_version_orig=$cwl_runner_version - -if [[ "${cwl_runner_version}" != "${ARVADOS_BUILDING_VERSION}" ]]; then - cwl_runner_version="${cwl_runner_version}-1" +if [[ "${cwl_runner_version_os}" != "${ARVADOS_BUILDING_VERSION}" ]]; then + cwl_runner_version_os="${cwl_runner_version_os}-1" else - cwl_runner_version="${ARVADOS_BUILDING_VERSION}-${ARVADOS_BUILDING_ITERATION}" + cwl_runner_version_os="${ARVADOS_BUILDING_VERSION}-${ARVADOS_BUILDING_ITERATION}" fi cd docker/jobs docker build $NOCACHE \ - --build-arg python_sdk_version=${python_sdk_version} \ - --build-arg cwl_runner_version=${cwl_runner_version} \ + --build-arg python_sdk_version=${python_sdk_version_os} \ + --build-arg cwl_runner_version=${cwl_runner_version_os} \ --build-arg repo_version=${REPO} \ - -t arvados/jobs:$cwl_runner_version_orig . + -t arvados/jobs:$cwl_runner_version . ECODE=$? @@ -193,40 +202,18 @@ if docker --version |grep " 1\.[0-9]\." ; then FORCE=-f fi -#docker export arvados/jobs:$cwl_runner_version_orig | docker import - arvados/jobs:$cwl_runner_version_orig - -if ! [[ -z "$version_tag" ]]; then - docker tag $FORCE arvados/jobs:$cwl_runner_version_orig arvados/jobs:"$version_tag" -else - docker tag $FORCE arvados/jobs:$cwl_runner_version_orig arvados/jobs:latest -fi - -ECODE=$? - -if [[ "$ECODE" != "0" ]]; then - EXITCODE=$(($EXITCODE + $ECODE)) -fi - -checkexit $ECODE "docker tag" -title "docker tag complete (`timer`)" - title "uploading images" timer_reset -if [[ "$ECODE" != "0" ]]; then +if [[ "$EXITCODE" != "0" ]]; then title "upload arvados images SKIPPED because build or tag failed" else if [[ $upload == true ]]; then ## 20150526 nico -- *sometimes* dockerhub needs re-login ## even though credentials are already in .dockercfg docker login -u arvados - if ! [[ -z "$version_tag" ]]; then - docker_push arvados/jobs:"$version_tag" - else - docker_push arvados/jobs:$cwl_runner_version_orig - docker_push arvados/jobs:latest - fi + docker_push arvados/jobs:$cwl_runner_version title "upload arvados images finished (`timer`)" else title "upload arvados images SKIPPED because no --upload option set (`timer`)"