]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-build.git/commitdiff
ceph-ansible-nightly: fix find for latest stable tag
authorSébastien Han <seb@redhat.com>
Fri, 16 Mar 2018 10:50:19 +0000 (11:50 +0100)
committerSébastien Han <seb@redhat.com>
Fri, 16 Mar 2018 10:50:19 +0000 (11:50 +0100)
Simplify the code to find the latest tag.
Docker Hub API when queried only returns the 10 first tags. This is
annoying but we have to:

* count the number of pages
* query all the tags from each page
* when we find one tag, we pick the first one from the variable

Signed-off-by: Sébastien Han <seb@redhat.com>
ceph-ansible-nightly/build/build

index b8f500cfac2cbf43f718a80147e18961a208a319..8259930ac518587633dd2862719f0399e67dc8e6 100644 (file)
@@ -15,44 +15,19 @@ WORKDIR=$(mktemp -td tox.XXXXXXXXXX)
 #############
 function count_tag_pages {
   sudo yum -y install jq
-  for i in $(seq 1 10000); do
-    rc=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.hub.docker.com/v2/repositories/ceph/daemon/tags/?page=${i}")
-    if [[ "$rc" != "200" ]]; then
-      break
-    else
-      total_page=$((total_page+1))
-    fi
-  done
-}
-
-function find_latest_jewel_tag {
-  for page in $(seq 1 $total_page); do
-    tag=$(curl -s "https://registry.hub.docker.com/v2/repositories/ceph/daemon/tags/?page=$page" | jq '."results"[] | select((.name | contains("stable")) and (.name | contains("jewel-ubuntu-16.04-x86_64"))) | .name')
-    tags="${tags} ${tag}"
-  done
-  # build array
-  array_jewel=()
-  for i in $tags; do
-    array_jewel+=("$i")
-  done
-  IFS=$'\n' sorted_jewel=($(sort <<<"${array_jewel[*]}"))
-  unset IFS
-  LAST_JEWEL_STABLE_TAG="${sorted_jewel[-1]}"
+  tag_count=$(curl -s "https://registry.hub.docker.com/v2/repositories/ceph/daemon/tags/" | jq '.count')
+  total_pages=$((tag_count / 10))
 }
 
-function find_latest_luminous_tag {
-  for page in $(seq 1 $total_page); do
-    tag=$(curl -s "https://registry.hub.docker.com/v2/repositories/ceph/daemon/tags/?page=$page" | jq '."results"[] | select((.name | contains("stable")) and (.name | contains("luminous-ubuntu-16.04-x86_64"))) | .name')
-    tags="${tags} ${tag}"
-  done
-  # build array
-  array_luminous=()
-  for i in $tags; do
-    array_luminous+=("$i")
+function find_latest_tag {
+  release="$1"
+  for page in $(seq 1 $total_pages); do
+    tag=$(curl -s "https://registry.hub.docker.com/v2/repositories/ceph/daemon/tags/?page=$page" | jq ".\"results\"[] | select((.name | contains(\"stable\")) and (.name | contains(\"${release}-ubuntu-16.04-x86_64\"))) | .name")
+    if [ -n "$tag" ]; then
+      echo "$tag" | cut -d '"' -f 2
+      return
+    fi
   done
-  IFS=$'\n' sorted_luminous=($(sort <<<"${array_luminous[*]}"))
-  unset IFS
-  LAST_LUMINOUS_STABLE_TAG="${sorted_luminous[-1]}"
 }
 
 function run_tox {
@@ -75,6 +50,6 @@ clear_libvirt_networks
 restart_libvirt_services
 update_vagrant_boxes
 count_tag_pages
-find_latest_jewel_tag
-find_latest_luminous_tag
+LAST_JEWEL_STABLE_TAG=$(find_latest_tag jewel)
+LAST_LUMINOUS_STABLE_TAG=$(find_latest_tag luminous)
 run_tox