fuel: Proposal for specifying scenario name in commit message 07/22907/2
authorFatih Degirmenci <fatih.degirmenci@ericsson.com>
Mon, 10 Oct 2016 09:26:51 +0000 (11:26 +0200)
committerFatih Degirmenci <fatih.degirmenci@ericsson.com>
Mon, 10 Oct 2016 09:31:05 +0000 (11:31 +0200)
Please take a look at fuel-basic-exp.sh for the proposal.

Apart from scenario name input proposal, jobs and script templatest have
been created as well.

Change-Id: I53b74b2e1ed34acb1f54b7ab21823227fff86d10
Signed-off-by: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
jjb/fuel/fuel-basic-exp.sh [new file with mode: 0755]
jjb/fuel/fuel-build-exp.sh [new file with mode: 0755]
jjb/fuel/fuel-deploy-exp.sh [new file with mode: 0755]
jjb/fuel/fuel-smoke-test-exp.sh [new file with mode: 0755]
jjb/fuel/fuel-verify-jobs-experimental.yml [new file with mode: 0644]

diff --git a/jjb/fuel/fuel-basic-exp.sh b/jjb/fuel/fuel-basic-exp.sh
new file mode 100755 (executable)
index 0000000..a70a0c7
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -o nounset
+
+echo "-----------------------------------------------------------------------"
+echo $GERRIT_CHANGE_COMMIT_MESSAGE
+echo "-----------------------------------------------------------------------"
+
+# proposal for specifying the scenario name in commit message
+# currently only 1 scenario name is supported but depending on
+# the need, it can be expanded, supporting multiple scenarios
+# using comma separated list or something
+SCENARIO_NAME_PATTERN="(?<=@scenario:).*?(?=@)"
+SCENARIO_NAME=(echo $GERRIT_CHANGE_COMMIT_MESSAGE | grep -oP "$SCENARIO_NAME_PATTERN")
+if [[ $? -ne 0 ]]; then
+    echo "The patch verification will be done only with build!"
+else
+    echo "Will run full verification; build, deploy, and smoke test using scenario $SCENARIO_NAME"
+fi
diff --git a/jjb/fuel/fuel-build-exp.sh b/jjb/fuel/fuel-build-exp.sh
new file mode 100755 (executable)
index 0000000..f7f613d
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then
+    JOB_TYPE=${BASH_REMATCH[0]}
+else
+    echo "Unable to determine job type!"
+    exit 1
+fi
+
+echo "Not activated!"
diff --git a/jjb/fuel/fuel-deploy-exp.sh b/jjb/fuel/fuel-deploy-exp.sh
new file mode 100755 (executable)
index 0000000..f7f613d
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then
+    JOB_TYPE=${BASH_REMATCH[0]}
+else
+    echo "Unable to determine job type!"
+    exit 1
+fi
+
+echo "Not activated!"
diff --git a/jjb/fuel/fuel-smoke-test-exp.sh b/jjb/fuel/fuel-smoke-test-exp.sh
new file mode 100755 (executable)
index 0000000..f7f613d
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then
+    JOB_TYPE=${BASH_REMATCH[0]}
+else
+    echo "Unable to determine job type!"
+    exit 1
+fi
+
+echo "Not activated!"
diff --git a/jjb/fuel/fuel-verify-jobs-experimental.yml b/jjb/fuel/fuel-verify-jobs-experimental.yml
new file mode 100644 (file)
index 0000000..ae83b08
--- /dev/null
@@ -0,0 +1,264 @@
+- project:
+    # TODO: rename the project name
+    # TODO: get rid of appended -exp from the remainder of the file
+    name: 'fuel-verify-jobs-experimental'
+
+    project: 'fuel'
+
+    installer: 'fuel'
+#------------------------------------
+# branch definitions
+#------------------------------------
+    # TODO: enable master once things settle
+    stream-exp:
+        - experimental:
+            branch: 'stable/{stream-exp}'
+            gs-pathname: '/{stream-exp}'
+            disabled: false
+#------------------------------------
+# patch verification phases
+#------------------------------------
+    phase:
+        - 'basic':
+            # this phase does basic commit message check, unit test and so on
+            slave-label: 'opnfv-build'
+        - 'build':
+            # this phase builds artifacts if valid for given installer
+            slave-label: 'opnfv-build-ubuntu'
+        - 'deploy-virtual':
+            # this phase does virtual deployment using the artifacts produced in previous phase
+            slave-label: 'fuel-virtual'
+        - 'smoke-test':
+            # this phase runs functest smoke test
+            slave-label: 'fuel-virtual'
+#------------------------------------
+# jobs
+#------------------------------------
+    jobs:
+        - 'fuel-verify-{stream-exp}'
+        - 'fuel-verify-{phase}-{stream-exp}'
+#------------------------------------
+# job templates
+#------------------------------------
+- job-template:
+    name: 'fuel-verify-{stream-exp}'
+
+    project-type: multijob
+
+    disabled: '{obj:disabled}'
+
+    # TODO: this is valid for experimental only
+    #       enable concurrency for master once things settle
+    concurrent: false
+
+    properties:
+        - throttle:
+            enabled: true
+            max-total: 4
+            option: 'project'
+
+    scm:
+        - gerrit-trigger-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: '$GERRIT_REFSPEC'
+            choosing-strategy: 'gerrit'
+
+    wrappers:
+        - ssh-agent-credentials:
+            users:
+                - '{ssh-credentials}'
+        - timeout:
+            timeout: 360
+            fail: true
+
+    triggers:
+        - gerrit:
+            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: 'ci/**'
+                  - compare-type: ANT
+                    pattern: 'build/**'
+                  - compare-type: ANT
+                    pattern: 'deploy/**'
+                forbidden-file-paths:
+                  - compare-type: ANT
+                    pattern: 'docs/**'
+            readable-message: true
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - 'opnfv-build-defaults'
+        - 'fuel-verify-defaults-exp':
+            gs-pathname: '{gs-pathname}'
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - multijob:
+            name: basic
+            condition: SUCCESSFUL
+            projects:
+                - name: 'fuel-verify-basic-{stream-exp}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+                  node-parameters: false
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: build
+            condition: SUCCESSFUL
+            projects:
+                - name: 'fuel-verify-build-{stream-exp}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+                  node-parameters: false
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: deploy-virtual
+            condition: SUCCESSFUL
+            projects:
+                - name: 'fuel-verify-deploy-virtual-{stream-exp}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+                  node-parameters: false
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: smoke-test
+            condition: SUCCESSFUL
+            projects:
+                - name: 'fuel-verify-smoke-test-{stream-exp}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+                  node-parameters: false
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+
+- job-template:
+    name: 'fuel-verify-{phase}-{stream-exp}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    properties:
+        - throttle:
+            enabled: true
+            max-total: 6
+            option: 'project'
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - 'fuel-verify-deploy-.*'
+                - 'fuel-verify-test-.*'
+            block-level: 'NODE'
+
+    scm:
+        - gerrit-trigger-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: '$GERRIT_REFSPEC'
+            choosing-strategy: 'gerrit'
+
+    wrappers:
+        - ssh-agent-credentials:
+            users:
+                - '{ssh-credentials}'
+        - timeout:
+            timeout: 360
+            fail: true
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - '{slave-label}-defaults'
+        - '{installer}-defaults'
+        - 'fuel-verify-defaults-exp':
+            gs-pathname: '{gs-pathname}'
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - '{project}-verify-{phase}-macro-exp'
+#------------------------------------
+# builder macros
+#------------------------------------
+- builder:
+    name: 'fuel-verify-basic-macro-exp'
+    builders:
+        - shell:
+            !include-raw: ./fuel-basic-exp.sh
+
+- builder:
+    name: 'fuel-verify-build-macro-exp'
+    builders:
+        - shell:
+            !include-raw: ./fuel-build-exp.sh
+        - shell:
+            !include-raw: ./fuel-workspace-cleanup.sh
+
+- builder:
+    name: 'fuel-verify-deploy-virtual-macro-exp'
+    builders:
+        - shell:
+            !include-raw: ./fuel-deploy-exp.sh
+
+- builder:
+    name: 'fuel-verify-smoke-test-macro-exp'
+    builders:
+        - shell:
+            !include-raw: ./fuel-smoke-test-exp.sh
+#------------------------------------
+# parameter macros
+#------------------------------------
+- parameter:
+    name: 'fuel-verify-defaults-exp'
+    parameters:
+        - string:
+            name: BUILD_DIRECTORY
+            default: $WORKSPACE/build_output
+            description: "Directory where the build artifact will be located upon the completion of the build."
+        - string:
+            name: CACHE_DIRECTORY
+            default: $HOME/opnfv/cache/$INSTALLER_TYPE
+            description: "Directory where the cache to be used during the build is located."
+        - string:
+            name: GS_URL
+            default: artifacts.opnfv.org/$PROJECT{gs-pathname}
+            description: "URL to Google Storage."