diff options
Diffstat (limited to 'jjb/opnfv/opnfv-docker.sh')
-rw-r--r-- | jjb/opnfv/opnfv-docker.sh | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/jjb/opnfv/opnfv-docker.sh b/jjb/opnfv/opnfv-docker.sh new file mode 100644 index 000000000..2b42938c0 --- /dev/null +++ b/jjb/opnfv/opnfv-docker.sh @@ -0,0 +1,93 @@ +#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail + + +echo "Starting opnfv-docker for $DOCKER_REPO_NAME ..." +echo "--------------------------------------------------------" +echo + + +# Remove previous running containers if exist +if [[ ! -z $(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 +fi + + +# Remove existing images if exist +if [[ ! -z $(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 $DOCKER_REPO_NAME:$tag + done +fi + +# If we just want to update the latest_stable image +if [[ "$UPDATE_LATEST_STABLE" == "true" ]]; then + echo "Pulling $DOCKER_REPO_NAME:$STABLE_TAG ..." + docker pull $DOCKER_REPO_NAME:$STABLE_TAG + if [[ $? -ne 0 ]]; then + echo "ERROR: The image $DOCKER_REPO_NAME with tag $STABLE_TAG does not exist." + exit 1 + fi + docker tag $DOCKER_REPO_NAME:$STABLE_TAG $DOCKER_REPO_NAME:latest_stable + echo "Pushing $DOCKER_REPO_NAME:latest_stable ..." + docker push $DOCKER_REPO_NAME:latest_stable + exit 0 +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 +elif [[ "$DOCKER_REPO_NAME" == "opnfv/yardstick" ]]; then + cd $WORKSPACE/ci/docker/yardstick-ci +else + echo "ERROR: DOCKER_REPO_NAME parameter not valid: $DOCKER_REPO_NAME" + exit 1 +fi + +# Start the build +echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG..." + +docker build -t $DOCKER_REPO_NAME:$DOCKER_TAG . +echo "Creating tag 'latest'..." +docker tag $DOCKER_REPO_NAME:$DOCKER_TAG $DOCKER_REPO_NAME:latest + +# list the images +echo "Available images are:" +docker images + +# Push image to Dockerhub +if [[ "$PUSH_IMAGE" == "true" ]]; then + echo "Pushing $DOCKER_REPO_NAME:$DOCKER_TAG to the docker registry..." + echo "--------------------------------------------------------" + echo + # Push to the Dockerhub repository + docker push $DOCKER_REPO_NAME:$DOCKER_TAG + + echo "Updating $DOCKER_REPO_NAME:latest to the docker registry..." + docker push $DOCKER_REPO_NAME:latest +fi |