X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Freleng%2Fopnfv-docker.sh;h=50efaada3e04f9a563a3723af4626e971edb28cf;hb=6cf5d8c90fad9135a5087a4134429006f173e532;hp=5c8cafbe3605edd21d25420deefbe1e7900102e5;hpb=880d0cb6207f276caa914e93e40db869621a09a9;p=releng.git diff --git a/jjb/releng/opnfv-docker.sh b/jjb/releng/opnfv-docker.sh index 5c8cafbe3..50efaada3 100644 --- a/jjb/releng/opnfv-docker.sh +++ b/jjb/releng/opnfv-docker.sh @@ -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 anuket/example-tasks:latest "/bin/bash" ... + # 99fcb59f4787 anuket/example-tasks-base:latest "/bin/bash" ... + # cc5eee16b995 anuket/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 ... + # anuket/example-tasks latest 6501569fd328 ... + # anuket/example-tasks-base latest 8764fe29c434 ... + # anuket/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,11 +94,24 @@ 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 anuket-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" -elif [[ -n "${RELEASE_VERSION-}" ]]; then +fi + +if [[ "$BRANCH" =~ "stable" ]]; then + DOCKER_TAG="stable" +fi + +if [[ -n "${RELEASE_VERSION-}" ]]; then DOCKER_TAG=${RELEASE_VERSION} if git checkout ${RELEASE_VERSION}; then echo "Successfully checked out the git tag ${RELEASE_VERSION}" @@ -91,8 +120,6 @@ elif [[ -n "${RELEASE_VERSION-}" ]]; then git tag exit 1 fi -else - DOCKER_TAG="stable" fi if [[ -n "${COMMIT_ID-}" && -n "${RELEASE_VERSION-}" ]]; then @@ -107,12 +134,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 --pull=true --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH - $ARCH_BUILD_ARG + $ARCH_BUILD_ARG $EXTRA_BUILD_ARGS -f $DOCKERFILE $DOCKER_PATH" echo ${cmd}