yardstick-cleanup.sh: try to fix docker rmi failure 49/41649/1
authorRoss Brattain <ross.b.brattain@intel.com>
Tue, 12 Sep 2017 01:44:45 +0000 (18:44 -0700)
committerRoss Brattain <ross.b.brattain@intel.com>
Tue, 12 Sep 2017 01:48:23 +0000 (18:48 -0700)
apex builds seem to be failing to remove the yardstick
containers

https://build.opnfv.org/ci/job/yardstick-apex-baremetal-daily-master/400/console

[yardstick-apex-baremetal-daily-master] $ /bin/bash /tmp/hudson8974425724638109512.sh
Cleaning up docker containers/images...
Docker images to remove:
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
opnfv/yardstick              latest              5b83d8e60fb7        6 days ago          1.84GB
Removing docker image opnfv/yardstick:latest...
Error response from daemon: No such image: opnfv/yardstick:latest
Build step 'Execute shell' marked build as failure

For some reason we can't remove the yardstick container.

Try instead to remove based on ID

Replace grep | awk with just awk.

Also fixed shellcheck warnings:

In jjb/yardstick/yardstick-cleanup.sh line 6:
if [[ -n ${dangling_images} ]]; then
         ^-- SC2128: Expanding an array without an index only gives the first element.

In jjb/yardstick/yardstick-cleanup.sh line 10:
        containers=$(docker ps -a | grep $image_id | awk '{print $1}')
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.

In jjb/yardstick/yardstick-cleanup.sh line 12:
            docker rm -f $containers >${redirect}
                         ^-- SC2086: Double quote to prevent globbing and word splitting.

In jjb/yardstick/yardstick-cleanup.sh line 14:
        docker rmi $image_id >${redirect}
                   ^-- SC2086: Double quote to prevent globbing and word splitting.

In jjb/yardstick/yardstick-cleanup.sh line 20:
if [[ ! -z $(docker ps -a | grep opnfv/yardstick) ]]; then
        ^-- SC2143: Use ! grep -q instead of comparing output with [ -z .. ].

In jjb/yardstick/yardstick-cleanup.sh line 27:
if [[ ! -z $(docker images | grep opnfv/yardstick) ]]; then
        ^-- SC2143: Use ! grep -q instead of comparing output with [ -z .. ].

In jjb/yardstick/yardstick-cleanup.sh line 33:
        docker rmi opnfv/yardstick:$tag >$redirect
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.

Change-Id: I6545ac7f568161e5620e31d487faf70fa21da075
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
jjb/yardstick/yardstick-cleanup.sh

index 51455b5..47bf9bd 100755 (executable)
@@ -1,36 +1,36 @@
 #!/bin/bash
-[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
+[[ ${CI_DEBUG} == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
 
 # Remove containers along with image opnfv/yardstick*:<none>
-dangling_images=($(docker images -f "dangling=true" | grep opnfv/yardstick | awk '{print $3}'))
-if [[ -n ${dangling_images} ]]; then
+dangling_images=($(docker images -f "dangling=true" | awk '/opnfv[/]yardstick/ {print $3}'))
+if [[ ${#dangling_images[@]} -eq 0 ]] ; then
     echo "Removing opnfv/yardstick:<none> images and their containers..."
     for image_id in "${dangling_images[@]}"; do
         echo "      Removing image_id: $image_id and its containers"
-        containers=$(docker ps -a | grep $image_id | awk '{print $1}')
+        containers=$(docker ps -a | awk "/${image_id}/ {print \$1}")
         if [[ -n "$containers" ]];then
-            docker rm -f $containers >${redirect}
+            docker rm -f "${containers}" >${redirect}
         fi
-        docker rmi $image_id >${redirect}
+        docker rmi "${image_id}" >${redirect}
     done
 fi
 
 echo "Cleaning up docker containers/images..."
 # Remove previous running containers if exist
-if [[ ! -z $(docker ps -a | grep opnfv/yardstick) ]]; then
+if docker ps -a | grep -q opnfv/yardstick; then
     echo "Removing existing opnfv/yardstick containers..."
-    docker ps -a | grep opnfv/yardstick | awk '{print $1}' | xargs docker rm -f >$redirect
+    docker ps -a | awk "/${image_id}/ {print \$1}" | xargs docker rm -f >${redirect}
 
 fi
 
 # Remove existing images if exist
-if [[ ! -z $(docker images | grep opnfv/yardstick) ]]; then
+if docker images | grep -q opnfv/yardstick; then
     echo "Docker images to remove:"
     docker images | head -1 && docker images | grep opnfv/yardstick
-    image_tags=($(docker images | grep opnfv/yardstick | awk '{print $2}'))
-    for tag in "${image_tags[@]}"; do
-        echo "Removing docker image opnfv/yardstick:$tag..."
-        docker rmi opnfv/yardstick:$tag >$redirect
+    image_ids=($(docker images | awk '/opnfv[/]yardstick/ {print $3}'))
+    for id in "${image_ids[@]}"; do
+        echo "Removing docker image id $id..."
+        docker rmi "${id}" >${redirect}
     done
 fi