Merge "dovetail: ci job added"
authorMatthewLi <matthew.lijun@huawei.com>
Fri, 23 Sep 2016 06:06:48 +0000 (06:06 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Fri, 23 Sep 2016 06:06:48 +0000 (06:06 +0000)
jjb/dovetail/dovetail-ci-jobs.yml [new file with mode: 0644]
jjb/dovetail/dovetail-cleanup.sh [new file with mode: 0755]
jjb/dovetail/dovetail-run.sh [new file with mode: 0755]

diff --git a/jjb/dovetail/dovetail-ci-jobs.yml b/jjb/dovetail/dovetail-ci-jobs.yml
new file mode 100644 (file)
index 0000000..015c416
--- /dev/null
@@ -0,0 +1,171 @@
+###################################
+# job configuration for dovetail
+###################################
+- project:
+    name: dovetail
+
+    project: '{name}'
+
+#---------------------------------------
+# BRANCH ANCHORS
+#---------------------------------------
+# 1)the stream/branch here represents the SUT(System Under Test) stream/branch
+# 2)docker-tag is the docker tag of dovetail(only master by now, then all latest used)
+#   the dovetail stream is one-to-one mapping with dovetail docker-tag
+#   the dovetail is not sync with A/B/C release
+#
+    master: &master
+        stream: master
+        branch: '{stream}'
+        gs-pathname: ''
+        docker-tag: 'latest'
+    colorado: &colorado
+        stream: colorado
+        branch: 'stable/{stream}'
+        gs-pathname: '{stream}'
+        docker-tag: 'latest'
+
+#-----------------------------------
+# POD, PLATFORM, AND BRANCH MAPPING
+#-----------------------------------
+#            CI PODs
+# This section should only contain the SUTs
+# that have been switched using labels for slaves
+#------------------------------------------------
+# the pods, SUTs listed here are just examples to
+# let the dovetail tool run, there can be more ways beside CI to
+# run the dovetail tool.
+# pods, SUTs will be added/adjusted when needed
+    pod:
+# fuel CI PODs
+        - baremetal:
+            slave-label: fuel-baremetal
+            SUT: fuel
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *master
+        - virtual:
+            slave-label: fuel-virtual
+            SUT: fuel
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *master
+        - baremetal:
+            slave-label: fuel-baremetal
+            SUT: fuel
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *colorado
+        - virtual:
+            slave-label: fuel-virtual
+            SUT: fuel
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *colorado
+#compass CI PODs
+        - baremetal:
+            slave-label: compass-baremetal
+            SUT: compass
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *master
+        - virtual:
+            slave-label: compass-virtual
+            SUT: compass
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *master
+        - baremetal:
+            slave-label: compass-baremetal
+            SUT: compass
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *colorado
+        - virtual:
+            slave-label: compass-virtual
+            SUT: compass
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *colorado
+#--------------------------------
+#        None-CI PODs
+#--------------------------------
+        - huawei-pod5:
+            slave-label: '{pod}'
+            SUT: compass
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *master
+#--------------------------------
+    testsuite:
+        - 'basic'
+
+    jobs:
+        - 'dovetail-{SUT}-{pod}-{testsuite}-{stream}'
+
+################################
+# job templates
+################################
+- job-template:
+    name: 'dovetail-{SUT}-{pod}-{testsuite}-{stream}'
+
+    disabled: false
+
+    concurrent: true
+
+    properties:
+        - throttle:
+            enabled: true
+            max-per-node: 1
+            option: 'project'
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+        - timeout:
+            timeout: 180
+            abort: true
+
+    triggers:
+        - '{auto-trigger-name}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - '{SUT}-defaults'
+        - '{slave-label}-defaults'
+        - string:
+            name: DEPLOY_SCENARIO
+            default: 'os-nosdn-nofeature-ha'
+        - string:
+            name: DOCKER_TAG
+            default: '{docker-tag}'
+            description: 'Tag to pull docker image'
+        - string:
+            name: CI_DEBUG
+            default: 'false'
+            description: "Show debug output information"
+
+    scm:
+        - git-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: ''
+            branch: '{branch}'
+
+    builders:
+        - description-setter:
+            description: "POD: $NODE_NAME"
+        - 'dovetail-cleanup'
+        - 'dovetail-{testsuite}'
+
+########################
+# builder macros
+########################
+- builder:
+    name: dovetail-basic
+    builders:
+        - shell:
+            !include-raw: ./dovetail-run.sh
+
+- builder:
+    name: dovetail-fetch-os-creds
+    builders:
+        - shell:
+            !include-raw: ../../utils/fetch_os_creds.sh
+
+- builder:
+    name: dovetail-cleanup
+    builders:
+        - shell:
+            !include-raw: ./dovetail-cleanup.sh
diff --git a/jjb/dovetail/dovetail-cleanup.sh b/jjb/dovetail/dovetail-cleanup.sh
new file mode 100755 (executable)
index 0000000..297222b
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
+
+echo "Cleaning up docker containers/images..."
+# Remove previous running containers if exist
+if [[ ! -z $(docker ps -a | grep opnfv/dovetail) ]]; then
+    echo "Removing existing opnfv/dovetail containers..."
+    docker ps -a | grep opnfv/dovetail | awk '{print $1}' | xargs docker rm -f >$redirect
+fi
+
+# Remove existing images if exist
+if [[ ! -z $(docker images | grep opnfv/dovetail) ]]; then
+    echo "Docker images to remove:"
+    docker images | head -1 && docker images | grep opnfv/dovetail
+    image_tags=($(docker images | grep opnfv/dovetail | awk '{print $2}'))
+    for tag in "${image_tags[@]}"; do
+        echo "Removing docker image opnfv/dovetail:$tag..."
+        docker rmi opnfv/dovetail:$tag >$redirect
+    done
+fi
diff --git a/jjb/dovetail/dovetail-run.sh b/jjb/dovetail/dovetail-run.sh
new file mode 100755 (executable)
index 0000000..c017650
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+#the noun INSTALLER is used in community, here is just the example to run.
+#multi-platforms are supported.
+
+set -e
+[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
+
+# labconfig is used only for joid
+labconfig=""
+sshkey=""
+if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
+    instack_mac=$(sudo virsh domiflist undercloud | grep default | \
+                  grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
+    INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $1'})
+    sshkey="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
+    if [[ -n $(sudo iptables -L FORWARD |grep "REJECT"|grep "reject-with icmp-port-unreachable") ]]; then
+        #note: this happens only in opnfv-lf-pod1
+        sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
+        sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
+    fi
+elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
+    # If production lab then creds may be retrieved dynamically
+    # creds are on the jumphost, always in the same folder
+    labconfig="-v $LAB_CONFIG/admin-openrc:/home/opnfv/openrc"
+    # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
+    # replace the default one by the customized one provided by jenkins config
+fi
+
+# Set iptables rule to allow forwarding return traffic for container
+if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
+    sudo iptables -I FORWARD -j RETURN
+fi
+
+opts="--privileged=true --rm"
+envs="-v /var/run/docker.sock:/var/run/docker.sock"
+
+# Pull the image with correct tag
+echo "Dovetail: Pulling image opnfv/dovetail:${DOCKER_TAG}"
+docker pull opnfv/dovetail:$DOCKER_TAG >$redirect
+
+# Run docker
+sudo docker run ${opts} ${envs} ${labconfig} ${sshkey} opnfv/dovetail:${DOCKER_TAG} \
+"/home/opnfv/dovetail/scripts/run.py"
+
+echo "Dovetail: done!"