dovetail: upload artifacts job added 21/26221/9
authorMatthewLi <matthew.lijun@huawei.com>
Mon, 19 Dec 2016 09:29:52 +0000 (04:29 -0500)
committerMatthewLi <matthew.lijun@huawei.com>
Tue, 20 Dec 2016 08:20:38 +0000 (03:20 -0500)
JIRA: DOVETAIL-164

this aims for dovetail offline usage

Change-Id: I7ebaf75fb03d925b669c05e77c0bb3db180aa045
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
jjb/dovetail/dovetail-artifacts-upload.sh [new file with mode: 0755]
jjb/dovetail/dovetail-artifacts-upload.yml [new file with mode: 0644]

diff --git a/jjb/dovetail/dovetail-artifacts-upload.sh b/jjb/dovetail/dovetail-artifacts-upload.sh
new file mode 100755 (executable)
index 0000000..5ec6b37
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Huawei Technologies Co.,Ltd 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 pipefail
+
+echo "dovetail: pull and save the images"
+
+[[ -d ${CACHE_DIR} ]] || mkdir -p ${CACHE_DIR}
+
+cd ${CACHE_DIR}
+sudo docker pull ${DOCKER_REPO_NAME}:${DOCKER_TAG}
+sudo docker save -o ${STORE_FILE_NAME} ${DOCKER_REPO_NAME}:${DOCKER_TAG}
+
+echo "dovetail: upload image to artifacts.opnfv.org, which can be for offline usage"
+gsutil cp ${CACHE_DIR}/${STORE_FILE_NAME} ${STORE_URL}
+
+echo "dovetail: uploading done"
diff --git a/jjb/dovetail/dovetail-artifacts-upload.yml b/jjb/dovetail/dovetail-artifacts-upload.yml
new file mode 100644 (file)
index 0000000..dc2ae5a
--- /dev/null
@@ -0,0 +1,130 @@
+############################################
+# dovetail upload artifacts job
+############################################
+- project:
+    name: dovetail-artifacts-upload
+
+    project: 'dovetail'
+
+    jobs:
+        - 'dovetail-{image}-artifacts-upload-{stream}'
+
+    stream:
+        - master:
+            branch: '{stream}'
+            gs-pathname: ''
+            disabled: false
+
+    image:
+        - 'dovetail'
+        - 'functest'
+        - 'yardstick'
+
+#############################################
+# job template
+#############################################
+
+- job-template:
+    name: 'dovetail-{image}-artifacts-upload-{stream}'
+
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    properties:
+        - throttle:
+            enabled: true
+            max-total: 1
+            max-per-node: 1
+            option: 'project'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - 'opnfv-build-ubuntu-defaults'
+        - dovetail-parameter:
+            gs-pathname: '{gs-pathname}'
+            image: '{image}'
+            branch: '{branch}'
+
+    scm:
+        - git-scm
+
+    builders:
+        - 'dovetail-builder-artifacts-upload'
+        - 'dovetail-workspace-cleanup'
+
+####################
+# parameter macros
+####################
+- parameter:
+    name: dovetail-parameter
+    parameters:
+        - string:
+            name: CACHE_DIR
+            default: $WORKSPACE/cache{gs-pathname}
+            description: "the cache to store packages downloaded"
+        - string:
+            name: STORE_URL
+            default: gs://artifacts.opnfv.org/dovetail{gs-pathname}
+            description: "LF artifacts url for storage of dovetail packages"
+        - string:
+            name: DOCKER_REPO_NAME
+            default: opnfv/{image}
+            description: "docker repo name"
+        - string:
+            name: DOCKER_TAG
+            default: latest
+            description: "docker image tag of which will be uploaded to artifacts"
+        - string:
+            name: STORE_FILE_NAME
+            default: image_{image}_{branch}_$BUILD_ID.docker
+            description: "stored file name"
+
+####################################
+#builders for dovetail project
+####################################
+- builder:
+    name: dovetail-builder-artifacts-upload
+    builders:
+        - shell:
+            !include-raw: ./dovetail-artifacts-upload.sh
+
+- builder:
+    name: dovetail-workspace-cleanup
+    builders:
+        - shell: |
+            #!/bin/bash
+            set -o errexit
+
+            echo "Dovetail: cleanup cache used for storage downloaded packages"
+
+            /bin/rm -rf $CACHE_DIR
+
+            # Remove previous running containers if exist
+            if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
+                echo "Removing existing $DOCKER_REPO_NAME containers..."
+                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 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do
+                    sleep 1
+                    let t=t-1
+                done
+            fi
+
+            # Remove existing images if exist
+            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
+                    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