Merge "Run patrole test in Jenkins"
authorFatih Degirmenci <fdegir@gmail.com>
Thu, 8 Mar 2018 09:09:14 +0000 (09:09 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 8 Mar 2018 09:09:14 +0000 (09:09 +0000)
12 files changed:
jjb/armband/armband-ci-jobs.yml
jjb/container4nfv/arm64/compass-deploy.sh
jjb/container4nfv/container4nfv-arm64.yml
jjb/daisy4nfv/daisy-daily-jobs.yml
jjb/fuel/fuel-daily-jobs.yml
jjb/global/installer-report.sh
jjb/global/releng-macros.yml
jjb/pharos/check-jinja2.yml
jjb/releng/compass4nfv-docker.yml
jjb/releng/functest-docker.yml
jjb/releng/opnfv-docker.yml
utils/jenkins-jnlp-connect.sh

index 339c3cc..d95ca4f 100644 (file)
@@ -62,6 +62,8 @@
           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
       - 'os-odl-nofeature-ha':
           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+      - 'os-ovn-nofeature-ha':
+          auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
       - 'os-nosdn-ovs-ha':
           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
 
       - 'os-nosdn-nofeature-noha':
           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
 
+    exclude:
+      - scenario: os-ovn-nofeature-ha
+        stream: euphrates
+
     jobs:
       - '{installer}-{scenario}-{pod}-daily-{stream}'
       - '{installer}-deploy-{pod}-daily-{stream}'
           condition-kind: and
           condition-operands:
             - condition-kind: regex-match
-              regex: '-ha$'
+              regex: '.*-ha'
               label: '{scenario}'
             - condition-kind: day-of-week
               day-selector: select-days
           condition-kind: and
           condition-operands:
             - condition-kind: regex-match
-              regex: '-ha$'
+              regex: '.*-ha'
               label: '{scenario}'
             - condition-kind: day-of-week
               day-selector: select-days
     name: 'fuel-os-odl-nofeature-ha-armband-baremetal-master-trigger'
     triggers:
       - timed: '0 1 * * 2,5,7'
+- trigger:
+    name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-master-trigger'
+    triggers:
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-master-trigger'
     triggers:
     name: 'fuel-os-odl-nofeature-ha-armband-virtual-master-trigger'
     triggers:
       - timed: ''
+- trigger:
+    name: 'fuel-os-ovn-nofeature-ha-armband-virtual-master-trigger'
+    triggers:
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-armband-virtual-master-trigger'
     triggers:
index bbbf3f4..a22af09 100755 (executable)
@@ -5,9 +5,14 @@ cd compass4nfv
 
 export ADAPTER_OS_PATTERN='(?i)CentOS-7.*arm.*'
 export OS_VERSION="centos7"
-export KUBERNETES_VERSION="v1.7.3"
-export DHA="deploy/conf/vm_environment/k8-nosdn-nofeature-noha.yml"
-export NETWORK="deploy/conf/vm_environment/network.yml"
-export VIRT_NUMBER=2 VIRT_CPUS=4 VIRT_MEM=8192 VIRT_DISK=50G
+export KUBERNETES_VERSION="v1.7.5"
+if [[ "$NODE_NAME" =~ "-virtual" ]]; then
+    export DHA="deploy/conf/vm_environment/k8-nosdn-nofeature-noha.yml"
+    export NETWORK="deploy/conf/vm_environment/network.yml"
+    export VIRT_NUMBER=2 VIRT_CPUS=4 VIRT_MEM=8192 VIRT_DISK=50G
+else
+    export DHA="deploy/conf/hardware_environment/huawei-pod8/k8-nosdn-nofeature-noha.yml"
+    export NETWORK="deploy/conf/hardware_environment/huawei-pod8/network.yml"
+fi
 
 ./deploy.sh
index b69c214..3246243 100644 (file)
@@ -9,15 +9,20 @@
           disabled: false
       - 'k8-sriov-nofeature-noha':
           disabled: false
+    pod:
+      - virtual:
+          slave-label: arm-packet01
+      - baremetal:
+          slave-label: compass-baremetal-arm
     jobs:
-      - 'container4nfv-{scenario}-virtual-daily-master'
+      - 'container4nfv-{scenario}-{pod}-daily-master'
 
 
 - job-template:
-    name: 'container4nfv-{scenario}-virtual-daily-master'
+    name: 'container4nfv-{scenario}-{pod}-daily-master'
     disabled: '{obj:disabled}'
     concurrent: false
-    node: arm-packet01
+    node: '{slave-label}'
 
     scm:
       - git:
@@ -28,7 +33,7 @@
           wipe-workspace: true
 
     triggers:
-      - 'trigger-{scenario}-virtual'
+      - 'trigger-{scenario}-{pod}'
 
     wrappers:
       - timeout:
@@ -46,6 +51,7 @@
             same-node: true
             block: false
 
+
 - trigger:
     name: 'trigger-k8-multus-nofeature-noha-virtual'
     triggers:
     name: 'trigger-k8-sriov-nofeature-noha-virtual'
     triggers:
       - timed: '0 16 * * *'
+
+- trigger:
+    name: 'trigger-k8-multus-nofeature-noha-baremetal'
+    triggers:
+      - timed: '0 16 * * *'
+- trigger:
+    name: 'trigger-k8-sriov-nofeature-noha-baremetal'
+    triggers:
+      - timed: '0 20 * * *'
index fbbb086..c354ca6 100644 (file)
       - string:
           name: DEPLOY_SCENARIO
           default: '{scenario}'
+      - string:
+          name: INSTALLER_VERSION
+          default: ''
+      - string:
+          name: UPSTREAM_JOB_NAME
+          default: ''
+      - string:
+          name: UPSTREAM_BUILD_ID
+          default: ''
       - 'daisy-project-parameter':
           gs-pathname: '{gs-pathname}'
 
index a214a56..b9120b0 100644 (file)
@@ -63,6 +63,8 @@
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-onos-nofeature-ha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
+      - 'os-ovn-nofeature-ha':
+          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-nosdn-kvm-ha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-nosdn-ovs-ha':
         stream: master
       - scenario: os-odl_l2-bgpvpn-ha
         stream: euphrates
+      - scenario: os-ovn-nofeature-noha
+        stream: danube
+      - scenario: os-ovn-nofeature-noha
+        stream: euphrates
+      - scenario: os-ovn-nofeature-ha
+        stream: danube
+      - scenario: os-ovn-nofeature-ha
+        stream: euphrates
 
     jobs:
       - 'fuel-{scenario}-{pod}-daily-{stream}'
           condition-kind: and
           condition-operands:
             - condition-kind: regex-match
-              regex: '-ha$'
+              regex: '.*-ha'
               label: '{scenario}'
             - condition-kind: day-of-week
               day-selector: select-days
           condition-kind: and
           condition-operands:
             - condition-kind: regex-match
-              regex: '-ha$'
+              regex: '.*-ha'
               label: '{scenario}'
             - condition-kind: day-of-week
               day-selector: select-days
     name: 'fuel-os-onos-nofeature-ha-baremetal-daily-master-trigger'
     triggers:
       - timed: ''  # '5 8 * * *'
+- trigger:
+    name: 'fuel-os-ovn-nofeature-ha-baremetal-daily-master-trigger'
+    triggers:
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-kvm-ha-baremetal-daily-master-trigger'
     triggers:
     name: 'fuel-os-onos-nofeature-noha-baremetal-daily-euphrates-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-ovn-nofeature-noha-baremetal-daily-euphrates-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-kvm-noha-baremetal-daily-euphrates-trigger'
     triggers:
     name: 'fuel-os-onos-nofeature-ha-virtual-daily-master-trigger'
     triggers:
       - timed: ''
+- trigger:
+    name: 'fuel-os-ovn-nofeature-ha-virtual-daily-master-trigger'
+    triggers:
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-kvm-ha-virtual-daily-master-trigger'
     triggers:
     name: 'fuel-os-onos-nofeature-noha-virtual-daily-euphrates-trigger'
     triggers:
       - timed: ''  # '0 23 * * *'
-- trigger:
-    name: 'fuel-os-ovn-nofeature-noha-virtual-daily-euphrates-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-kvm-noha-virtual-daily-euphrates-trigger'
     triggers:
     name: 'fuel-os-onos-nofeature-ha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
+- trigger:
+    name: 'fuel-os-ovn-nofeature-ha-zte-pod1-daily-master-trigger'
+    triggers:
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-kvm-ha-zte-pod1-daily-master-trigger'
     triggers:
index e2fcfd6..6cd83f1 100755 (executable)
@@ -8,18 +8,39 @@
 ##############################################################################
 
 source $WORKSPACE/installer_track.sh
-echo """
-    INSTALLER: $INSTALLER
-    INSTALLER_VERSION: $INSTALLER_VERSION
-    JOB_NAME: $JOB_NAME
-    BUILD_ID: $BUILD_ID
-    SENARIO: $DEPLOY_SCENARIO
-    UPSTREAM_JOB_NAME: $UPSTREAM_JOB_NAME:
-    UPSTREAM_BUILD_ID: $UPSTREAM_BUILD_ID
-    PROVISION_RESULT: $PROVISION_RESULT
-    TIMESTAMP_START: $TIMESTAMP_START
-    TIMESTAMP_END: `date '+%Y-%m-%d %H:%M:%S.%3N'`
-    POD_NAME: $NODE_NAME
-"""
 
-# TODO call TestAPI to report installer provisoin result when API is ready
+gen_content()
+{
+    cat <<EOF
+{
+    "installer": "$INSTALLER",
+    "version": "$INSTALLER_VERSION",
+    "pod_name": "$NODE_NAME",
+    "job_name": "$JOB_NAME",
+    "build_id": "$BUILD_ID",
+    "scenario": "$DEPLOY_SCENARIO",
+    "upstream_job_name": "$UPSTREAM_JOB_NAME",
+    "upstream_build_id":"$UPSTREAM_BUILD_ID",
+    "criteria": "$PROVISION_RESULT",
+    "start_date": "$TIMESTAMP_START",
+    "stop_date": "$TIMESTAMP_END",
+    "details":""
+}
+EOF
+}
+
+echo "Installer: $INSTALLER provision result: $PROVISION_RESULT"
+echo $(gen_content)
+
+set -o xtrace
+curl -H "Content-Type: application/json" -X POST -v -d "$(gen_content)" \
+    $TESTAPI_URL/deployresults || true
+
+# INFO
+# postbuildscript plugin shall always return the original job running status,
+# for the result returned from postbuildscript affects the CI pipeline.
+if [ "$PROVISION_RESULT" == "PASS" ]; then
+    exit 0
+else
+    exit 1
+fi
index 3433cee..8f03234 100644 (file)
           name: GERRIT_REFSPEC
           default: 'refs/heads/{branch}'
           description: "Default refspec needed for manually triggering."
+      - string:
+          name: TESTAPI_URL
+          default: 'http://testresults.opnfv.org/test/api/v1'
+          description: "Default TestAPI URL, currently using v1"
 
 - property:
     name: logrotate-default
           script-only-if-succeeded: true
           builders:
             - shell: |
-                echo "export PROVISION_RESULT=SUCCEED" >> $WORKSPACE/installer_track.sh
-                echo "export INSTALLER={installer}" >> $WORKSPACE/installer_track.sh
+                echo "export PROVISION_RESULT=PASS" >> $WORKSPACE/installer_track.sh
+                echo "export INSTALLER=$INSTALLER_TYPE" >> $WORKSPACE/installer_track.sh
+                echo "export TIMESTAMP_END="\'`date '+%Y-%m-%d %H:%M:%S.%3N'`\' > $WORKSPACE/installer_track.sh
             - shell:
-                !include-raw-escape: installer-report.sh
+                !include-raw: installer-report.sh
       - postbuildscript:
           script-only-if-succeeded: false
           script-only-if-failed: true
           builders:
             - shell: |
                 echo "export PROVISION_RESULT=FAIL" >> $WORKSPACE/installer_track.sh
-                echo "export INSTALLER={installer}" >> $WORKSPACE/installer_track.sh
+                echo "export INSTALLER=$INSTALLER_TYPE" >> $WORKSPACE/installer_track.sh
+                echo "export TIMESTAMP_END="\'`date '+%Y-%m-%d %H:%M:%S.%3N'`\' > $WORKSPACE/installer_track.sh
             - shell:
-                !include-raw-escape: installer-report.sh
+                !include-raw: installer-report.sh
index 7251d3f..3ef2f04 100644 (file)
                 - compare-type: ANT
                   pattern: '**/*.yaml'
                 - compare-type: ANT
-                  pattern: 'config/installers/**/*.j2'
+                  pattern: 'config/utils/*.py'
                 - compare-type: ANT
-                  pattern: 'check-jinja2.sh'
+                  pattern: 'config/installers/**/*.j2'
                 - compare-type: ANT
-                  pattern: 'check-schema.sh'
+                  pattern: 'check-*.sh'
           skip-vote:
             successful: false
             failed: false
index 7f14224..5fbb37c 100644 (file)
@@ -27,6 +27,8 @@
       - 'db'
       - 'deck'
       - 'tasks-base'
+      - 'tasks-k8s'
+      - 'tasks-osa'
 
     # settings for jobs run in multijob phases
     build-job-settings: &build-job-settings
               <<: *build-job-settings
             - name: 'compass-tasks-build-amd64-{stream}'
               <<: *build-job-settings
+            - name: 'compass-tasks-k8s-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'compass-tasks-osa-build-amd64-{stream}'
+              <<: *build-job-settings
 
     publishers:
       - 'compass-amd64-recipients'
index bfeae5e..7c576cf 100644 (file)
@@ -29,6 +29,7 @@
       - 'features'
       - 'components'
       - 'parser'
+      - 'patrole'
       - 'smoke'
       - 'vnf'
       - 'restapi'
               <<: *build-job-settings
             - name: 'functest-parser-docker-build-arm64-{stream}'
               <<: *build-job-settings
+            - name: 'functest-patrole-docker-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-patrole-docker-build-arm64-{stream}'
+              <<: *build-job-settings
             - name: 'functest-smoke-docker-build-amd64-{stream}'
               <<: *build-job-settings
             - name: 'functest-smoke-docker-build-arm64-{stream}'
               <<: *manifest-job-settings
             - name: 'functest-parser-docker-manifest-{stream}'
               <<: *manifest-job-settings
+            - name: 'functest-patrole-docker-manifest-{stream}'
+              <<: *manifest-job-settings
             - name: 'functest-smoke-docker-manifest-{stream}'
               <<: *manifest-job-settings
             - name: 'functest-vnf-docker-manifest-{stream}'
index 93b9a9c..d0c2b26 100644 (file)
           dockerdir: 'docker/barometer-ves'
           <<: *master
           <<: *other-receivers
+      - 'barometer-snmp':
+          project: 'barometer'
+          dockerdir: 'docker/barometer-snmp'
+          <<: *master
+          <<: *other-receivers
       - 'bottlenecks':
           project: 'bottlenecks'
           <<: *master
index f7c6769..0647d32 100755 (executable)
 #Monit setup script for opnfv jnlp slave connections
 
 test_firewall() {
-    echo "testing that the firewall is open for us at build.opnfv.org"
-    test=$(echo "blah"| nc -w 4 build.opnfv.org 57387 > /dev/null 2>&1; echo $?)
+jenkins_hostname="${jenkins_hostname:-build.opnfv.org}"
+
+
+    echo "testing that the firewall is open for us at $jenkins_hostname"
+    test=$(echo "blah"| nc -w 4 $jenkins_hostname 57387 > /dev/null 2>&1; echo $?)
     if [[ $test == 0 ]]; then
-        echo "Firewall is open for us at build.opnfv.org"
+        echo "Firewall is open for us at $jenkins_hostname"
         exit 0
     else
         cat << EOF
@@ -84,8 +87,14 @@ main () {
 
         if [ -d /etc/monit/conf.d ]; then
             monitconfdir="/etc/monit/conf.d/"
+            monitconfig="/etc/monit/monitrc"
+            #add start delay
+            sed -i '/^#.* delay /s/^#//' "$monitconfig"
         elif [ -d /etc/monit.d ]; then
             monitconfdir="/etc/monit.d"
+            monitconfig="/etc/monitrc"
+            #add start delay
+            sed -i '/^#.* delay /s/^#//' "$monitconfig"
         else
             echo "Could not determine the location of the monit configuration file."
             echo "Make sure monit is installed."
@@ -103,7 +112,7 @@ if does not exist then exec "$mkdir -p /var/run/$jenkinsuser"
 if failed uid $jenkinsuser then exec "$chown $jenkinsuser /var/run/$jenkinsuser"
 if failed gid $jenkinsuser then exec "$chown :$jenkinsuser /var/run/$jenkinsuser"
 
-check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid every 2 cycles
+check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid
 start program = "/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds"
 stop program = "/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'"
 depends on jenkins_piddir
@@ -118,7 +127,7 @@ if does not exist then exec \"$mkdir -p /var/run/$jenkinsuser\"
 if failed uid $jenkinsuser then exec \"$chown $jenkinsuser /var/run/$jenkinsuser\"
 if failed gid $jenkinsuser then exec \"$chown :$jenkinsuser /var/run/$jenkinsuser\"
 
-check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid every 2 cycles
+check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid
 start program = \"/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds\"
 stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\"
 depends on jenkins_piddir\
@@ -132,7 +141,7 @@ depends on jenkins_piddir\
     fi
 
     if [[ $started_monit == "true" ]]; then
-        wget --timestamping https://build.opnfv.org/ci/jnlpJars/slave.jar && true
+        wget --timestamping https://"$jenkins_hostname"/jnlpJars/slave.jar && true
         chown $jenkinsuser:$jenkinsuser slave.jar
 
         if [[ -f /var/run/$jenkinsuser/jenkins_jnlp_pid ]]; then
@@ -176,6 +185,7 @@ usage: $0 [OPTIONS]
  -u  set jenkins user
  -n  set slave name
  -s  set secret key
+ -l  set host, default is build.opnfv.org/ci
  -t  test the connection string by connecting without monit
  -f  test firewall
 
@@ -190,13 +200,14 @@ if [[ -z "$@" ]]; then
     usage
 fi
 
-while getopts "j:u:n:s:htf" OPTION
+while getopts "j:u:n:s:l:htf" OPTION
 do
     case $OPTION in
         j ) jenkinshome="$OPTARG" ;;
         u ) jenkinsuser="$OPTARG" ;;
         n ) slave_name="$OPTARG" ;;
         s ) slave_secret="$OPTARG";;
+        l ) jenkins_hostname="$OPTARG" ;;
         h ) usage ;;
         t ) started_monit=true
             skip_monit=true
@@ -206,6 +217,6 @@ do
     esac
 done
 
-connectionstring="java -jar slave.jar -jnlpUrl https://build.opnfv.org/ci/computer/"$slave_name"/slave-agent.jnlp -secret "$slave_secret" -noCertificateCheck "
-
+jenkins_hostname="${jenkins_hostname:-build.opnfv.org/ci}"
+connectionstring="java -jar slave.jar -jnlpUrl https://"$jenkins_hostname"/computer/"$slave_name"/slave-agent.jnlp -secret "$slave_secret" -noCertificateCheck "
 main "$@"