Delete docker images by tag in Functest docker job
[releng.git] / jjb / functest / functest-docker.sh
1 #!/bin/bash
2 set -o errexit
3 set -o nounset
4 set -o pipefail
5
6
7 echo "Starting the build of Functest Docker."
8 echo "--------------------------------------------------------"
9 echo
10
11 DOCKER_IMAGE_NAME="opnfv/functest"
12
13
14 # Get tag version
15 cd $WORKSPACE
16 git clone https://gerrit.opnfv.org/gerrit/releng
17
18 DOCKER_TAG=$($WORKSPACE/releng/utils/calculate_version.sh -t docker \
19     -n $DOCKER_IMAGE_NAME)
20
21 ret_val=$?
22 if [ $ret_val -ne 0 ]; then
23     echo "Error retrieving the version tag."
24     exit 1
25 else
26     echo "Tag version to be build and pushed: $DOCKER_TAG"
27 fi
28
29
30 # Remove previous running containers if exist
31 if [[ ! -z $(docker ps -a | grep $DOCKER_IMAGE_NAME) ]]; then
32     echo "Removing existing $DOCKER_IMAGE_NAME containers..."
33     docker ps | grep $DOCKER_IMAGE_NAME | awk '{{print $1}}' | xargs docker stop
34     docker ps -a | grep $DOCKER_IMAGE_NAME | awk '{{print $1}}' | xargs docker rm
35 fi
36
37
38 # Remove existing images if exist
39 if [[ ! -z $(docker images | grep $DOCKER_IMAGE_NAME) ]]; then
40     echo "Docker images to remove:"
41     docker images | head -1 && docker images | grep $DOCKER_IMAGE_NAME
42     image_tags=($(docker images | grep $DOCKER_IMAGE_NAME | awk '{{print $2}}'))
43     for tag in "${{image_tags[@]}}"; do
44         echo "Removing docker image $DOCKER_IMAGE_NAME:$tag..."
45         docker rmi $DOCKER_IMAGE_NAME:$tag
46     done
47 fi
48
49
50 # Start the build
51 echo "Building docker image: $DOCKER_IMAGE_NAME:$DOCKER_TAG..."
52 cd $WORKSPACE/docker
53 docker build -t $DOCKER_IMAGE_NAME:$DOCKER_TAG .
54 echo "Creating tag 'latest'..."
55 docker tag $DOCKER_IMAGE_NAME:$DOCKER_TAG $DOCKER_IMAGE_NAME:latest
56
57 # list the images
58 echo "Available images are:"
59 docker images
60
61
62 if [ "$PUSH_IMAGE" == "true" ]; then
63     echo "Pushing $DOCKER_IMAGE_NAME:$DOCKER_TAG to the docker registry..."
64     echo "--------------------------------------------------------"
65     echo
66     # Push to the Dockerhub repository
67     docker push $DOCKER_IMAGE_NAME:$DOCKER_TAG
68
69     echo "Updating $DOCKER_IMAGE_NAME:latest to the docker registry..."
70     docker push $DOCKER_IMAGE_NAME:latest
71 fi