Merge "Create generic jenkins job to build and push a docker image"
authorjose.lausuch <jose.lausuch@ericsson.com>
Fri, 27 Nov 2015 13:19:24 +0000 (13:19 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Fri, 27 Nov 2015 13:19:24 +0000 (13:19 +0000)
jjb/functest/functest-docker.sh [deleted file]
jjb/opnfv/opnfv-docker.sh [new file with mode: 0644]
jjb/opnfv/opnfv-docker.yml [moved from jjb/functest/functest-docker.yml with 66% similarity]

diff --git a/jjb/functest/functest-docker.sh b/jjb/functest/functest-docker.sh
deleted file mode 100644 (file)
index c73bcf9..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-set -o errexit
-set -o nounset
-set -o pipefail
-
-
-echo "Starting the build of Functest Docker."
-echo "--------------------------------------------------------"
-echo
-
-DOCKER_IMAGE_NAME="opnfv/functest"
-
-
-# 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_IMAGE_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
-
-
-# Remove previous running containers if exist
-if [[ ! -z $(docker ps -a | grep $DOCKER_IMAGE_NAME) ]]; then
-    echo "Removing existing $DOCKER_IMAGE_NAME containers..."
-    docker ps | grep $DOCKER_IMAGE_NAME | awk '{{print $1}}' | xargs docker stop
-    docker ps -a | grep $DOCKER_IMAGE_NAME | awk '{{print $1}}' | xargs docker rm
-fi
-
-
-# Remove existing images if exist
-if [[ ! -z $(docker images | grep $DOCKER_IMAGE_NAME) ]]; then
-    echo "Docker images to remove:"
-    docker images | head -1 && docker images | grep $DOCKER_IMAGE_NAME
-    image_tags=($(docker images | grep $DOCKER_IMAGE_NAME | awk '{{print $2}}'))
-    for tag in "${{image_tags[@]}}"; do
-        echo "Removing docker image $DOCKER_IMAGE_NAME:$tag..."
-        docker rmi $DOCKER_IMAGE_NAME:$tag
-    done
-fi
-
-
-# Start the build
-echo "Building docker image: $DOCKER_IMAGE_NAME:$DOCKER_TAG..."
-cd $WORKSPACE/docker
-docker build -t $DOCKER_IMAGE_NAME:$DOCKER_TAG .
-echo "Creating tag 'latest'..."
-docker tag $DOCKER_IMAGE_NAME:$DOCKER_TAG $DOCKER_IMAGE_NAME:latest
-
-# list the images
-echo "Available images are:"
-docker images
-
-
-if [ "$PUSH_IMAGE" == "true" ]; then
-    echo "Pushing $DOCKER_IMAGE_NAME:$DOCKER_TAG to the docker registry..."
-    echo "--------------------------------------------------------"
-    echo
-    # Push to the Dockerhub repository
-    docker push $DOCKER_IMAGE_NAME:$DOCKER_TAG
-
-    echo "Updating $DOCKER_IMAGE_NAME:latest to the docker registry..."
-    docker push $DOCKER_IMAGE_NAME:latest
-fi
diff --git a/jjb/opnfv/opnfv-docker.sh b/jjb/opnfv/opnfv-docker.sh
new file mode 100644 (file)
index 0000000..0301444
--- /dev/null
@@ -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
\ No newline at end of file
similarity index 66%
rename from jjb/functest/functest-docker.yml
rename to jjb/opnfv/opnfv-docker.yml
index ee5adc6..dfff050 100644 (file)
@@ -1,15 +1,17 @@
 ##############################################
-# job configuration for functest docker build
+# job configuration for docker build and push
 ##############################################
 
 - project:
 
-    name: functest-docker
+    name: opnfv-docker
 
-    project: 'functest'
+    project:
+        - 'functest'
+        - 'yardstick'
 
     jobs:
-        - 'functest-docker-build-push-{stream}'
+        - '{project}-docker-build-push-{stream}'
 
     stream:
         - master:
@@ -18,9 +20,8 @@
 ########################
 # job templates
 ########################
-
 - job-template:
-    name: 'functest-docker-build-push-{stream}'
+    name: '{project}-docker-build-push-{stream}'
 
     project-type: freestyle
 
     parameters:
         - project-parameter:
             project: '{project}'
-        - functest-docker-parameter
-
+        - string:
+            name: GIT_BASE
+            default: "https://gerrit.opnfv.org/gerrit/$PROJECT"
+            description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
+        - string:
+            name: PUSH_IMAGE
+            default: "true"
+            description: "To enable/disable pushing the image to Dockerhub."
+        - string:
+            name: BASE_VERSION
+            default: "brahmaputra.0"
+            description: "Base version to be used."
+        - string:
+            name: DOCKER_REPO_NAME
+            default: "opnfv/{project}"
+            description: "Dockerhub repo to be pushed to."
+        - string:
+            name: UPDATE_LATEST_STABLE
+            default: "false"
+            description: "This will update the latest_stable image only."
+        - string:
+            name: STABLE_TAG
+            description: "If above option is true, this is the tag to be pulled."
 
     scm:
         - git-scm:
 
     builders:
         - shell:
-            !include-raw ./functest-docker.sh
+            !include-raw ./opnfv-docker.sh
 
     triggers:
         - pollscm: "*/30 * * * *"
-
-
-########################
-# parameter macros
-########################
-- parameter:
-    name: functest-docker-parameter
-    parameters:
-        - string:
-            name: GIT_BASE
-            default: "https://gerrit.opnfv.org/gerrit/$PROJECT"
-            description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
-        - string:
-            name: PUSH_IMAGE
-            default: "true"
-            description: "To enable/disable pushing the image to Dockerhub."
-        - string:
-            name: BASE_VERSION
-            default: "brahmaputra.0"
-            description: "Base version to be used."