Remove all compass jobs
[releng.git] / jjb / releng / opnfv-docker.sh
index 28e5b7c..de39f06 100644 (file)
@@ -20,12 +20,20 @@ echo
 function remove_containers_images()
 {
     # Remove previous running containers if exist
-    if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
+    #
+    # $ docker ps -a
+    # CONTAINER ID        IMAGE                            COMMAND      ...
+    # 6a796ed40b8e        opnfv/example-tasks:latest       "/bin/bash"  ...
+    # 99fcb59f4787        opnfv/example-tasks-base:latest  "/bin/bash"  ...
+    # cc5eee16b995        opnfv/example-tasks-k8s          "/bin/bash"  ...
+    #
+    # Cut image name by leading space and ending space or colon(tag)
+    if [[ -n "$(docker ps -a | grep " $DOCKER_REPO_NAME[ :]")" ]]; then
         echo "Removing existing $DOCKER_REPO_NAME containers..."
-        docker ps -a | grep $DOCKER_REPO_NAME | awk '{print $1}' | xargs docker rm -f
+        docker ps -a | grep " $DOCKER_REPO_NAME[ :]" | awk '{print $1}' | xargs docker rm -f
         t=60
         # Wait max 60 sec for containers to be removed
-        while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do
+        while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep " $DOCKER_REPO_NAME[ :]")" ]]; do
             sleep 1
             let t=t-1
         done
@@ -33,12 +41,20 @@ function remove_containers_images()
 
 
     # Remove existing images if exist
-    if [[ -n "$(docker images | grep $DOCKER_REPO_NAME)" ]]; then
+    #
+    # $ docker images
+    # REPOSITORY                    TAG                 IMAGE ID        ...
+    # opnfv/example-tasks           latest              6501569fd328    ...
+    # opnfv/example-tasks-base      latest              8764fe29c434    ...
+    # opnfv/example-tasks-k8s       latest              61094cac9e65    ...
+    #
+    # Cut image name by start of line and ending space
+    if [[ -n "$(docker images | grep "^$DOCKER_REPO_NAME ")" ]]; then
         echo "Docker images to remove:"
-        docker images | head -1 && docker images | grep $DOCKER_REPO_NAME
-        image_ids=($(docker images | grep $DOCKER_REPO_NAME | awk '{print $3}'))
+        docker images | head -1 && docker images | grep "^$DOCKER_REPO_NAME "
+        image_ids=($(docker images | grep "^$DOCKER_REPO_NAME " | awk '{print $3}'))
         for id in "${image_ids[@]}"; do
-            if [[ -n "$(docker images|grep $DOCKER_REPO_NAME|grep $id)" ]]; then
+            if [[ -n "$(docker images|grep "^$DOCKER_REPO_NAME "|grep $id)" ]]; then
                 echo "Removing docker image $DOCKER_REPO_NAME:$id..."
                 docker rmi -f $id
             fi
@@ -78,7 +94,14 @@ echo "Current branch: $BRANCH"
 BUILD_BRANCH=$BRANCH
 
 GERRIT_REFNAME=${GERRIT_REFNAME:-''}
-RELEASE_VERSION=${GERRIT_REFNAME/refs\/tags//}
+RELEASE_VERSION=${GERRIT_REFNAME/refs\/tags\/}
+
+# If we're being triggered by a comment-added job, then extract the tag
+# from the comment and use that as the release version.
+# Expected comment format: retag opnfv-x.y.z
+if [[ "${GERRIT_EVENT_TYPE:-}" == "comment-added" ]]; then
+    RELEASE_VERSION=$(echo "$GERRIT_EVENT_COMMENT_TEXT" | grep 'retag' | awk '{print $2}')
+fi
 
 if [[ "$BRANCH" == "master" ]]; then
     DOCKER_TAG="latest"
@@ -107,12 +130,18 @@ if [[ -n "${ARCH_TAG}" ]]; then
     ARCH_BUILD_ARG="--build-arg ARCH=${ARCH_TAG}"
 fi
 
+EXTRA_BUILD_ARGS=${EXTRA_BUILD_ARGS:-}
+if [ -n "${EXTRA_BUILD_ARGS}" ]; then
+    EXTRA_BUILD_ARGS=" "$(echo ${EXTRA_BUILD_ARGS})
+    EXTRA_BUILD_ARGS=${EXTRA_BUILD_ARGS// / --build-arg }
+fi
+
 # Start the build
 echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG"
 echo "--------------------------------------------------------"
 echo
-cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH
-    $ARCH_BUILD_ARG
+cmd="docker build --pull=true --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH
+    $ARCH_BUILD_ARG $EXTRA_BUILD_ARGS
     -f $DOCKERFILE $DOCKER_PATH"
 
 echo ${cmd}