X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fopnfv%2Fopnfv-docker.sh;h=702c0ce5241d72d629613e134f767058cc76820a;hb=refs%2Fchanges%2F85%2F13885%2F1;hp=545aef6dd2e14ebf1baac57822f62ae05a7e64dc;hpb=ba3da3399fbd23b688970c1e661a0c6775b5f9f4;p=releng.git diff --git a/jjb/opnfv/opnfv-docker.sh b/jjb/opnfv/opnfv-docker.sh index 545aef6dd..702c0ce52 100644 --- a/jjb/opnfv/opnfv-docker.sh +++ b/jjb/opnfv/opnfv-docker.sh @@ -1,4 +1,12 @@ #!/bin/bash +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2016 Ericsson AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## set -o errexit set -o nounset set -o pipefail @@ -9,18 +17,21 @@ echo "--------------------------------------------------------" echo +if [[ -n $(ps -ef|grep 'docker build'|grep -v grep) ]]; then + echo "There is already another build process in progress:" + echo $(ps -ef|grep 'docker build'|grep -v grep) + # Abort this job since it will colide and might mess up the current one. + echo "Aborting..." + exit 1 +fi + # Remove previous running containers if exist -if [[ ! -z $(docker ps -a | grep $DOCKER_REPO_NAME) ]]; then +if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then echo "Removing existing $DOCKER_REPO_NAME containers..." - #docker ps | grep $DOCKER_REPO_NAME | awk '{{print $1}}' | xargs docker stop - 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 ]; do - ids=$(docker ps | grep $DOCKER_REPO_NAME |awk '{{print $1}}') - if [[ -z $ids ]]; then - break - fi + while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do sleep 1 let t=t-1 done @@ -28,13 +39,15 @@ fi # Remove existing images if exist -if [[ ! -z $(docker images | grep $DOCKER_REPO_NAME) ]]; then +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_tags=($(docker images | grep $DOCKER_REPO_NAME | awk '{{print $2}}')) - for tag in "${{image_tags[@]}}"; do - echo "Removing docker image $DOCKER_REPO_NAME:$tag..." - docker rmi -f $DOCKER_REPO_NAME:$tag + image_tags=($(docker images | grep $DOCKER_REPO_NAME | awk '{print $2}')) + for tag in "${image_tags[@]}"; do + if [[ -n "$(docker images|grep $DOCKER_REPO_NAME|grep $tag)" ]]; then + echo "Removing docker image $DOCKER_REPO_NAME:$tag..." + docker rmi -f $DOCKER_REPO_NAME:$tag + fi done fi @@ -53,22 +66,6 @@ if [[ "$UPDATE_LATEST_STABLE" == "true" ]]; then fi -# Get tag version -cd $WORKSPACE -git clone https://gerrit.opnfv.org/gerrit/releng - -DOCKER_TAG=$($WORKSPACE/releng/utils/calculate_version.sh -t docker \ - -n $DOCKER_REPO_NAME) - -ret_val=$? -if [ $ret_val -ne 0 ]; then - echo "Error retrieving the version tag." - exit 1 -else - echo "Tag version to be build and pushed: $DOCKER_TAG" -fi - - # cd to directory where Dockerfile is located if [[ "$DOCKER_REPO_NAME" == "opnfv/functest" ]]; then cd $WORKSPACE/docker @@ -78,17 +75,42 @@ elif [[ "$DOCKER_REPO_NAME" == "opnfv/storperf" ]]; then cd $WORKSPACE/docker elif [[ "$DOCKER_REPO_NAME" == "opnfv/qtip" ]]; then cd $WORKSPACE/docker +elif [[ "$DOCKER_REPO_NAME" == "opnfv/bottlenecks" ]]; then + cd $WORKSPACE/ci/docker else echo "ERROR: DOCKER_REPO_NAME parameter not valid: $DOCKER_REPO_NAME" exit 1 fi +# Get tag version +branch="${GIT_BRANCH##origin/}" +echo "Current branch: $branch" + +if [[ "$branch" == "master" ]]; then + DOCKER_TAG="master" + DOCKER_BRANCH_TAG="latest" +else + git clone https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng + + DOCKER_TAG=$($WORKSPACE/releng/utils/calculate_version.sh -t docker \ + -n $DOCKER_REPO_NAME) + DOCKER_BRANCH_TAG="stable" + + ret_val=$? + if [[ $ret_val -ne 0 ]]; then + echo "Error retrieving the version tag." + exit 1 + fi +fi +echo "Tag version to be build and pushed: $DOCKER_TAG" + + # Start the build -echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG..." +echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG" -docker build -t $DOCKER_REPO_NAME:$DOCKER_TAG . -echo "Creating tag 'latest'..." -docker tag $DOCKER_REPO_NAME:$DOCKER_TAG $DOCKER_REPO_NAME:latest +docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG . +echo "Creating tag '$DOCKER_TAG'..." +docker tag -f $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG $DOCKER_REPO_NAME:$DOCKER_TAG # list the images echo "Available images are:" @@ -100,8 +122,9 @@ if [[ "$PUSH_IMAGE" == "true" ]]; then echo "--------------------------------------------------------" echo # Push to the Dockerhub repository - docker push $DOCKER_REPO_NAME:$DOCKER_TAG + echo "Pushing $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG ..." + docker push $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG - echo "Updating $DOCKER_REPO_NAME:latest to the docker registry..." - docker push $DOCKER_REPO_NAME:latest + echo "Pushing $DOCKER_REPO_NAME:$DOCKER_TAG ..." + docker push $DOCKER_REPO_NAME:$DOCKER_TAG fi