Apex: Adds gate scenario job 73/28373/2
authorTim Rozet <trozet@redhat.com>
Thu, 9 Feb 2017 15:14:08 +0000 (10:14 -0500)
committerTim Rozet <trozet@redhat.com>
Thu, 9 Feb 2017 15:49:52 +0000 (10:49 -0500)
Apex needs a way to run a gate job after basic scenarios (nosdn,
odl-nofeature) pass.  We need the capability to specify which scenario
should be the gate.  This patch allows us via a comment to specify
'start-gate-scenario: <scenario>' which will start a gate job to
validate that scenario deploys and passes basic functest health check.

Some drawbacks of this approach include only being able to validate a
single scenario per comment + gerrit votes overriding (not true
workflow/pipeline plugin).  The positive is this is a fairly small CI
change to enable some much needed verification.  It will be the Apex
committers responsibility to issue this comment post Jenkins +1 approval
of pre-gate.

Change-Id: I9a1364bb1cece8b35488d496789a5e83c707b32d
Signed-off-by: Tim Rozet <trozet@redhat.com>
jjb/apex/apex-deploy.sh
jjb/apex/apex.yml

index 31c1bed..790d2a3 100755 (executable)
@@ -62,6 +62,21 @@ fi
 if [ -z "$DEPLOY_SCENARIO" ]; then
   echo "Deploy scenario not set!"
   exit 1
+elif [ "$DEPLOY_SCENARIO" == *gate* ]; then
+  echo "Detecting Gating scenario..."
+  if [ -z "$GERRIT_EVENT_COMMENT_TEXT" ]; then
+    echo "ERROR: Gate job triggered without comment!"
+    exit 1
+  else
+    DEPLOY_SCENARIO=$(echo ${GERRIT_EVENT_COMMENT_TEXT} | grep start-gate-scenario | grep -Eo 'os-.*$')
+    if [ -z "$DEPLOY_SCENARIO" ]; then
+      echo "ERROR: Unable to detect scenario in Gerrit Comment!"
+      echo "Format of comment to trigger gate should be 'start-gate-scenario: <scenario>'"
+      exit 1
+    else
+      echo "Gate scenario detected: ${DEPLOY_SCENARIO}"
+    fi
+  fi
 fi
 
 # use local build for verify and csit promote
index 512112e..07da97a 100644 (file)
@@ -2,6 +2,7 @@
     name: apex
     jobs:
         - 'apex-verify-{stream}'
+        - 'apex-verify-gate-{stream}'
         - 'apex-verify-unit-tests-{stream}'
         - 'apex-runner-{platform}-{scenario}-{stream}'
         - 'apex-runner-cperf-{stream}'
@@ -45,6 +46,7 @@
          - 'os-odl_l3-fdio_dvr-ha'
          - 'os-odl_l3-csit-noha'
          - 'os-onos-nofeature-ha'
+         - 'gate'
 
     platform:
          - 'baremetal'
             same-node: true
         - 'apex-workspace-cleanup'
 
+# Verify Scenario Gate
+- job-template:
+    name: 'apex-verify-gate-{stream}'
+
+    node: '{verify-slave}'
+
+    concurrent: true
+
+    parameters:
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - string:
+            name: GIT_BASE
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
+            description: "Used for overriding the GIT URL coming from parameters macro."
+
+    scm:
+        - git-scm-gerrit
+
+    triggers:
+        - gerrit:
+            server-name: 'gerrit.opnfv.org'
+            trigger-on:
+                - comment-added-contains-event:
+                    comment-contains-value: '^Patch Set [0-9]+: Code-Review\+2.*start-gate-scenario:.*'
+            projects:
+              - project-compare-type: 'ANT'
+                project-pattern: 'apex'
+                branches:
+                  - branch-compare-type: 'ANT'
+                    branch-pattern: '**/{branch}'
+                file-paths:
+                  - compare-type: ANT
+                    pattern: 'ci/**'
+                  - compare-type: ANT
+                    pattern: 'build/**'
+                  - compare-type: ANT
+                    pattern: 'lib/**'
+                  - compare-type: ANT
+                    pattern: 'config/**'
+
+    properties:
+        - logrotate-default
+        - build-blocker:
+            use-build-blocker: true
+            block-level: 'NODE'
+            blocking-jobs:
+                - 'apex-daily.*'
+                - 'apex-deploy.*'
+                - 'apex-build.*'
+                - 'apex-runner.*'
+                - 'apex-verify.*'
+        - throttle:
+            max-per-node: 1
+            max-total: 10
+            option: 'project'
+
+    builders:
+        - 'apex-build'
+        - trigger-builds:
+          - project: 'apex-deploy-virtual-gate-{stream}'
+            predefined-parameters: |
+              BUILD_DIRECTORY=apex-verify-gate-{stream}
+              OPNFV_CLEAN=yes
+            git-revision: false
+            block: true
+            same-node: true
+        - trigger-builds:
+          - project: 'functest-apex-{verify-slave}-suite-{stream}'
+            predefined-parameters: |
+              DEPLOY_SCENARIO=os-nosdn-nofeature-ha
+              FUNCTEST_SUITE_NAME=healthcheck
+            block: true
+            same-node: true
+        - 'apex-workspace-cleanup'
+
 - job-template:
     name: 'apex-runner-{platform}-{scenario}-{stream}'