If a version tag is passed to run-build-docker-jobs-image.sh, actually use that
[arvados.git] / build / run-build-docker-jobs-image.sh
index 7b5ea4ecec6bcda873ed8a98ea09d862e8dd86f4..fc1eb72c73397df5a782b600546044dfe64e9881 100755 (executable)
@@ -1,17 +1,20 @@
 #!/bin/bash
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
 
 function usage {
     echo >&2
     echo >&2 "usage: $0 [options]"
     echo >&2
     echo >&2 "$0 options:"
+    echo >&2 "  -t, --tags                    version tag for docker"
     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"
     echo >&2
     echo >&2 "  If no options are given, just builds the images."
 }
-
 upload=false
 
 # NOTE: This requires GNU getopt (part of the util-linux package on Debian-based distros).
@@ -42,7 +45,7 @@ do
                   exit 1
                   ;;
                 *)
-                  echo "WARNING: --tags is deprecated and doesn't do anything";
+                  version_tag="$2";
                   shift 2
                   ;;
             esac
@@ -115,26 +118,42 @@ timer_reset
 # clean up the docker build environment
 cd "$WORKSPACE"
 
+if [[ -z "$ARVADOS_BUILDING_VERSION" ]] && ! [[ -z "$version_tag" ]]; then
+       ARVADOS_BUILDING_VERSION="$version_tag"
+       ARVADOS_BUILDING_ITERATION="1"
+fi
+
 python_sdk_ts=$(cd sdk/python && timestamp_from_git)
 cwl_runner_ts=$(cd sdk/cwl && timestamp_from_git)
 
-python_sdk_version=$(cd sdk/python && nohash_version_from_git 0.1)-2
-cwl_runner_version=$(cd sdk/cwl && nohash_version_from_git 1.0)-3
+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=$python_sdk_version
-    gittag=$(cd sdk/python && git log --first-parent --max-count=1 --format=format:%H)
-else
-    gittag=$(cd sdk/cwl && git log --first-parent --max-count=1 --format=format:%H)
+    cwl_runner_version=$(cd sdk/python && nohash_version_from_git 1.0)
 fi
 
 echo cwl_runner_version $cwl_runner_version python_sdk_version $python_sdk_version
 
+if [[ "${python_sdk_version}" != "${ARVADOS_BUILDING_VERSION}" ]]; then
+       python_sdk_version="${python_sdk_version}-2"
+else
+       python_sdk_version="${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}-4"
+else
+       cwl_runner_version="${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 \
-       -t arvados/jobs:$gittag .
+       --build-arg python_sdk_version=${python_sdk_version} \
+       --build-arg cwl_runner_version=${cwl_runner_version} \
+       -t arvados/jobs:$cwl_runner_version_orig .
 
 ECODE=$?
 
@@ -156,8 +175,11 @@ if docker --version |grep " 1\.[0-9]\." ; then
     # -f flag removed in Docker 1.12
     FORCE=-f
 fi
-
-docker tag $FORCE arvados/jobs:$gittag arvados/jobs:latest
+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=$?
 
@@ -179,9 +201,12 @@ else
         ## 20150526 nico -- *sometimes* dockerhub needs re-login
         ## even though credentials are already in .dockercfg
         docker login -u arvados
-
-        docker_push arvados/jobs:$gittag
-        docker_push arvados/jobs:latest
+        if ! [[ -z "$version_tag" ]]; then
+            docker_push arvados/jobs:"$version_tag"
+        else
+           docker_push arvados/jobs:$cwl_runner_version
+           docker_push arvados/jobs:latest
+        fi
         title "upload arvados images finished (`timer`)"
     else
         title "upload arvados images SKIPPED because no --upload option set (`timer`)"