Clean Functest images for CI jobs on ARM
[releng.git] / jjb / functest / functest-cleanup.sh
index 4bedfe7..c21b543 100755 (executable)
@@ -3,19 +3,38 @@
 [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
 
 echo "Cleaning up docker containers/images..."
+FUNCTEST_IMAGE=opnfv/functest
+
+# Remove containers along with image opnfv/functest*:<none>
+dangling_images=($(docker images -f "dangling=true" | grep $FUNCTEST_IMAGE | awk '{print $3}'))
+if [[ -n ${dangling_images} ]]; then
+    echo "  Removing $FUNCTEST_IMAGE:<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}')
+        if [[ -n "$containers" ]];then
+            docker rm -f $containers >${redirect}
+        fi
+        docker rmi $image_id >${redirect}
+    done
+fi
+
 # Remove previous running containers if exist
-if [[ ! -z $(docker ps -a | grep opnfv/functest) ]]; then
-    echo "Removing existing opnfv/functest containers..."
-    docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm -f >${redirect}
+functest_containers=$(docker ps -a | grep $FUNCTEST_IMAGE | awk '{print $1}')
+if [[ -n ${functest_containers} ]]; then
+    echo "  Removing existing $FUNCTEST_IMAGE containers..."
+    docker rm -f $functest_containers >${redirect}
 fi
 
 # Remove existing images if exist
-if [[ ! -z $(docker images | grep opnfv/functest) ]]; then
-    echo "Docker images to remove:"
-    docker images | head -1 && docker images | grep opnfv/functest >${redirect}
-    image_tags=($(docker images | grep opnfv/functest | awk '{print $2}'))
-    for tag in "${image_tags[@]}"; do
-        echo "Removing docker image opnfv/functest:$tag..."
-        docker rmi opnfv/functest:$tag >/dev/null
-    done
+if [[ $CLEAN_DOCKER_IMAGES == true ]]; then
+    functest_image_tags=($(docker images | grep $FUNCTEST_IMAGE | awk '{print $2}'))
+    if [[ -n ${functest_image_tags} ]]; then
+        echo "  Docker images to be removed:" >${redirect}
+        (docker images | head -1 && docker images | grep $FUNCTEST_IMAGE) >${redirect}
+        for tag in "${functest_image_tags[@]}"; do
+            echo "      Removing docker image $FUNCTEST_IMAGE:$tag..."
+            docker rmi $FUNCTEST_IMAGE:$tag >${redirect}
+        done
+    fi
 fi