[Daisy] Add docker image tarball builder 29/46229/12
authorZhijiang Hu <hu.zhijiang@zte.com.cn>
Thu, 26 Oct 2017 03:56:14 +0000 (23:56 -0400)
committerZhijiang Hu <hu.zhijiang@zte.com.cn>
Sat, 28 Oct 2017 09:10:39 +0000 (05:10 -0400)
This PS do:
1. Add docker image tarball builder as a Daisy project job.
   Name is daisy-kolla-build-.*
2. Upload image to artifact storage after building.
3. Fix new job runs on daisy-virtual.
4. Block jobs with each other which may run Daisy VM because
VM has the same name.

Change-Id: I148473ca33f1e10490684b7608354a4ba548714f
Signed-off-by: Zhijiang Hu <hu.zhijiang@zte.com.cn>
jjb/daisy4nfv/daisy-daily-jobs.yml
jjb/daisy4nfv/daisy-project-jobs.yml
jjb/daisy4nfv/daisy4nfv-build-kolla-image.sh [new file with mode: 0755]

index b3c37b8..2f09149 100644 (file)
@@ -94,6 +94,7 @@
           use-build-blocker: true
           blocking-jobs:
             - 'daisy-daily-.*'
+            - 'daisy-kolla-build-.*'
           block-level: 'NODE'
 
     wrappers:
           use-build-blocker: true
           blocking-jobs:
             - 'daisy.*-deploy-({pod})?-daily-.*'
+            - 'daisy-kolla-build-.*'
           block-level: 'NODE'
 
     parameters:
index b6e9526..006153f 100644 (file)
     jobs:
       - '{installer}-daily-{stream}'
       - '{installer}-{phase}-daily-{stream}'
+      - '{installer}-kolla-build-{stream}'
+
+#############################
+# docker build job templates
+#############################
+- job-template:
+    name: '{installer}-kolla-build-{stream}'
+    disabled: false
+    concurrent: true
+
+    properties:
+      - logrotate-default
+      - throttle:
+          enabled: true
+          max-total: 4
+          option: 'project'
+      - build-blocker:
+          use-build-blocker: true
+          # Note: Need to block all jobs which may create daisy VM.
+          blocking-jobs:
+            - '{installer}-kolla-build-.*'
+            - 'daisy-deploy-.*'
+            - 'daisy-daily-.*'
+          block-level: 'NODE'
+
+    scm:
+      - git-scm
+
+    triggers:
+      - 'daisy-kolla-build-{stream}-trigger'
+
+    parameters:
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - 'daisy-virtual-defaults'
+      - '{installer}-defaults'
+      - '{installer}-project-parameter':
+          gs-pathname: '{gs-pathname}'
+
+    wrappers:
+      - ssh-agent-wrapper
+      - timeout:
+          timeout: 720
+          fail: true
+
+    builders:
+      - description-setter:
+          description: "Built on $NODE_NAME"
+      - shell:
+          !include-raw-escape: ./daisy4nfv-build-kolla-image.sh
+
+    publishers:
+      - '{installer}-recipients'
+      - email-jenkins-admins-on-failure
+
+- trigger:
+    name: 'daisy-kolla-build-euphrates-trigger'
+    triggers:
+      - timed: '0 0 * * 0'
+
+- trigger:
+    name: 'daisy-kolla-build-master-trigger'
+    triggers:
+      - timed: '0 12 * * 0'
+
 
 ########################
 # job templates
           use-build-blocker: true
           blocking-jobs:
             - '{installer}-daily-.*'
+            - '{installer}-kolla-build-.*'
             - 'daisy4nfv-merge-build-.*'
             - 'daisy4nfv-verify-build-.*'
           block-level: 'NODE'
diff --git a/jjb/daisy4nfv/daisy4nfv-build-kolla-image.sh b/jjb/daisy4nfv/daisy4nfv-build-kolla-image.sh
new file mode 100755 (executable)
index 0000000..d080df5
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2016 ZTE Coreporation and others.
+# hu.zhijiang@zte.com.cn
+# sun.jing22@zte.com.cn
+# 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 errexit
+set -o nounset
+set -o pipefail
+
+importkey () {
+    # clone releng repository
+    echo "Cloning releng repository..."
+    [ -d releng ] && rm -rf releng
+    git clone https://gerrit.opnfv.org/gerrit/releng ./releng/ &> /dev/null
+    #this is where we import the siging key
+    if [ -f ./releng/utils/gpg_import_key.sh ]; then
+        source ./releng/utils/gpg_import_key.sh
+    fi
+}
+
+upload_image_to_opnfv () {
+    image=$1
+
+    importkey
+    if gpg2 --list-keys | grep "opnfv-helpdesk@rt.linuxfoundation.org"; then
+        echo "Signing Key avaliable"
+        SIGN_ARTIFACT="true"
+    fi
+
+    if [[ -n "$SIGN_ARTIFACT" && "$SIGN_ARTIFACT" == "true" ]]; then
+        gpg2 -vvv --batch --yes --no-tty \
+            --default-key opnfv-helpdesk@rt.linuxfoundation.org  \
+            --passphrase besteffort \
+            --detach-sig $image
+        gsutil cp $image.sig gs://$GS_URL/upstream/$image.sig
+        echo "Image signature upload complete!"
+    fi
+
+    sha512sum -b $image > $image.sha512sum
+    gsutil cp $image.sha512sum gs://$GS_URL/upstream/$image.sha512sum
+
+    echo "Uploading $INSTALLER_TYPE artifact. This could take some time..."
+    echo
+    gsutil cp $image gs://$GS_URL/upstream/$image
+    gsutil -m setmeta \
+        -h "Cache-Control:private, max-age=0, no-transform" \
+        gs://$GS_URL/upstream/$image
+
+    # check if we uploaded the file successfully to see if things are fine
+    gsutil ls gs://$GS_URL/upstream/$image
+    if [[ $? -ne 0 ]]; then
+        echo "Problem while uploading artifact!"
+        exit 1
+    fi
+}
+
+
+
+echo "--------------------------------------------------------"
+echo "This is diasy4nfv kolla image build job!"
+echo "--------------------------------------------------------"
+
+# start the build
+cd $WORKSPACE
+rm -rf docker_build_dir
+mkdir -p docker_build_dir
+
+# -j is for deciding which branch will be used when building,
+# only for OPNFV
+./ci/kolla-build.sh -j $JOB_NAME -w $WORKSPACE/docker_build_dir
+
+image=$(ls $WORKSPACE/docker_build_dir/kolla-build-output/kolla-image-*.tgz)
+upload_image_to_opnfv $image
+
+echo
+echo "--------------------------------------------------------"
+echo "Done!"