bugfix: run doctor tests parallelly
[releng.git] / jjb / doctor / doctor.yml
index 6a04c5f..7a82b5d 100644 (file)
           gs-pathname: ''
           docker-tag: 'latest'
           disabled: false
-      - euphrates:
+      - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
           docker-tag: 'stable'
           disabled: false
 
     installer:
-      - apex:
-          slave-label: 'doctor-apex-verify'
-      - fuel:
-          slave-label: 'doctor-fuel-verify'
-    # - joid:
-    #     slave-label: 'ool-virtual3'
-    #     pod: 'ool-virtual3'
+      - 'apex'
+      - 'fuel'
+      - 'daisy'
+
+    arch:
+      - 'x86_64'
+      - 'aarch64'
 
     inspector:
       - 'sample'
       - 'congress'
 
-    task:
-      - verify:
-          auto-trigger-name: 'doctor-verify'
-          is-python: false
-      - python-verify:
-          auto-trigger-name: 'doctor-verify'
-          is-python: true
-
-    pod:
-      - armband-baremetal:
-          slave-label: '{pod}'
-      - armband-virtual:
-          slave-label: '{pod}'
+    exclude:
+      - installer: 'apex'
+        arch: 'aarch64'
+      - installer: 'daisy'
+        arch: 'aarch64'
 
     jobs:
-      - 'doctor-verify-{stream}'
-      - 'doctor-{task}-{installer}-{inspector}-{pod}-{stream}'
-      - 'doctor-{task}-{installer}-{inspector}-{stream}'
+      - 'doctor-verify-{inspector}-{stream}'
+      - 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
 
 - job-template:
-    name: 'doctor-verify-{stream}'
-
+    name: 'doctor-verify-{inspector}-{stream}'
     disabled: '{obj:disabled}'
-
+    project-type: 'multijob'
     parameters:
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'opnfv-build-ubuntu-defaults'
-
+      - 'doctor-slave-parameter'
     scm:
       - git-scm-gerrit
-
     triggers:
-      - gerrit:
-          server-name: 'gerrit.opnfv.org'
-          trigger-on:
-            - patchset-created-event:
-                exclude-drafts: 'false'
-                exclude-trivial-rebase: 'false'
-                exclude-no-code-change: 'false'
-            - draft-published-event
-            - comment-added-contains-event:
-                comment-contains-value: 'recheck'
-            - comment-added-contains-event:
-                comment-contains-value: 'reverify'
-          projects:
-            - project-compare-type: 'ANT'
-              project-pattern: '{project}'
-              branches:
-                - branch-compare-type: 'ANT'
-                  branch-pattern: '**/{branch}'
-              file-paths:
-                - compare-type: ANT
-                  pattern: 'doctor_tests/**'
+      - 'doctor-verify':
+          project: '{project}'
+          branch: '{branch}'
+          files: 'doctor_tests/**'
 
     builders:
-      - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
+      - shell: |
+         #!/bin/bash
+         # we do nothing here as the main stuff will be done
+         # in phase jobs
+         echo "Triggering phase jobs!"
+      - multijob:
+          name: 'doctor-verify'
+          execution-type: PARALLEL
+          projects:
+            - name: 'doctor-verify-apex-{inspector}-x86_64-{stream}'
+              predefined-parameters: |
+                PROJECT=$PROJECT
+                GERRIT_BRANCH=$GERRIT_BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              kill-phase-on: FAILURE
+              git-revision: true
+            - name: 'doctor-verify-fuel-{inspector}-x86_64-{stream}'
+              predefined-parameters: |
+                PROJECT=$PROJECT
+                GERRIT_BRANCH=$GERRIT_BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              kill-phase-on: FAILURE
+              git-revision: true
+            - name: 'doctor-verify-fuel-{inspector}-aarch64-{stream}'
+              predefined-parameters: |
+                GERRIT_BRANCH=$GERRIT_BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              kill-phase-on: FAILURE
+              git-revision: true
+            - name: 'doctor-verify-daisy-{inspector}-x86_64-{stream}'
+              predefined-parameters: |
+                PROJECT=$PROJECT
+                GERRIT_BRANCH=$GERRIT_BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              kill-phase-on: FAILURE
+              git-revision: true
 
 - job-template:
-    name: 'doctor-{task}-{installer}-{inspector}-{pod}-{stream}'
-
-    node: '{slave-label}'
-
+    name: 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
     disabled: '{obj:disabled}'
-
+    node: 'doctor-{installer}-{arch}'
+    wrappers:
+      - ssh-agent-wrapper
+      - build-timeout:
+          timeout: 30
     parameters:
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'opnfv-build-ubuntu-defaults'
-
+      - '{installer}-defaults'
+      - 'doctor-slave-parameter'
+      - 'doctor-parameter'
+      - 'doctor-functest-parameter'
     scm:
       - git-scm-gerrit
-
-
-    triggers:
-      - '{auto-trigger-name}':
-          project: '{project}'
-          branch: '{branch}'
-          files: 'doctor_tests/**'
-
     builders:
-      - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
-
-
-- job-template:
-    name: 'doctor-{task}-{installer}-{inspector}-{stream}'
+      - 'doctor-verify-installer-inspector-builders-macro'
+    publishers:
+      - 'doctor-verify-publishers-macro'
 
-    node: '{slave-label}'
 
+# -------------------------------
+# parameter macros
+# -------------------------------
+- parameter:
+    name: 'doctor-parameter'
     parameters:
-      - project-parameter:
-          project: '{project}'
-          branch: '{branch}'
       - string:
           name: OS_CREDS
           default: /home/jenkins/openstack.creds
           description: 'OpenStack credentials'
-      - '{slave-label}-defaults'
-      - '{installer}-defaults'
       - string:
           name: DOCKER_TAG
           default: '{docker-tag}'
           name: DEPLOY_SCENARIO
           default: 'os-nosdn-nofeature-ha'
           description: 'Scenario to deploy and test'
+
+- parameter:
+    name: 'doctor-functest-parameter'
+    parameters:
       # functest-suite-parameter
       - string:
           name: FUNCTEST_MODE
           default: 'doctor-notification'
       - string:
           name: TESTCASE_OPTIONS
-          default: '-e INSPECTOR_TYPE={inspector} -e PYTHON_ENABLE={is-python} -v $WORKSPACE:/home/opnfv/repos/doctor'
+          # yamllint disable rule:line-length
+          default: '-e INSPECTOR_TYPE={inspector} -v $WORKSPACE:/home/opnfv/repos/doctor'
+          # yamllint enable rule:line-length
           description: 'Addtional parameters specific to test case(s)'
       # functest-parameter
       - string:
           name: GS_PATHNAME
           default: '{gs-pathname}'
+          # yamllint disable rule:line-length
           description: "Version directory where the opnfv documents will be stored in gs repository"
+          # yamllint enable rule:line-length
       - string:
           name: FUNCTEST_REPO_DIR
           default: "/home/opnfv/repos/functest"
           name: CI_DEBUG
           default: 'true'
           description: "Show debug output information"
+# -------------------------------
+# builder macros
+# -------------------------------
 
-    scm:
-      - git-scm-gerrit
-
-    triggers:
-      - '{auto-trigger-name}':
-          project: '{project}'
-          branch: '{branch}'
-          files: 'doctor_tests/**'
-
+- builder:
+    name: 'doctor-verify-installer-inspector-builders-macro'
     builders:
       - 'clean-workspace-log'
+      # yamllint disable rule:line-length
       - shell: |
           # NOTE: Create symbolic link, so that we can archive file outside
           #       of $WORKSPACE .
           # NOTE: checking the test result, as the previous job could return
           #       0 regardless the result of doctor test scenario.
           grep -e 'doctor test successfully' $functest_log || exit 1
+      # yamllint enable rule:line-length
 
+# -------------------------------
+# publisher macros
+# -------------------------------
+- publisher:
+    name: 'doctor-verify-publishers-macro'
     publishers:
       - archive:
           artifacts: 'doctor_tests/*.log'