diff options
author | jose.lausuch <jose.lausuch@ericsson.com> | 2015-11-27 13:19:24 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.206> | 2015-11-27 13:19:24 +0000 |
commit | 875ef9816810ee2f1119528ca18f881d76497d2f (patch) | |
tree | c900e46e9531a87df910cfdd3e1ad5fb1a2577ba /jjb | |
parent | e0d76f879b5ae0927b6312ae51bf53485e538ee2 (diff) | |
parent | 7c7f2f0bc299c31a1fe5ffe3271b44439c80a65d (diff) |
Merge "Create generic jenkins job to build and push a docker image"
Diffstat (limited to 'jjb')
-rw-r--r-- | jjb/functest/functest-docker.sh | 71 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docker.sh | 93 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docker.yml (renamed from jjb/functest/functest-docker.yml) | 60 |
3 files changed, 124 insertions, 100 deletions
diff --git a/jjb/functest/functest-docker.sh b/jjb/functest/functest-docker.sh deleted file mode 100644 index c73bcf99a..000000000 --- a/jjb/functest/functest-docker.sh +++ /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 index 000000000..030144457 --- /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
\ No newline at end of file diff --git a/jjb/functest/functest-docker.yml b/jjb/opnfv/opnfv-docker.yml index ee5adc6f7..dfff050a9 100644 --- a/jjb/functest/functest-docker.yml +++ b/jjb/opnfv/opnfv-docker.yml @@ -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 @@ -31,8 +32,29 @@ 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: @@ -48,27 +70,7 @@ 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." |