openci: Add OPNFV scenario composition and test jobs for the demo 97/57497/25
authorFatih Degirmenci <fdegir@gmail.com>
Wed, 16 May 2018 18:32:16 +0000 (20:32 +0200)
committerFatih Degirmenci <fdegir@gmail.com>
Fri, 18 May 2018 15:53:06 +0000 (17:53 +0200)
The flow is
- OPNFV compose job gets triggered by the ArtifactPublishedEvents published by
ODL and ONAP autorelease jobs, composing the corresponding scenarios. At the
end, CompositionDefinedEvent is published for the composed scenario.
- OPNFV test job gets triggered by the CompositionDefinedEvents published by
OPNFV compose jobs, deploying and testing the composed scenario. At the end,
ConfidenceLevelModifiedEvent is published for the tested scenario which can
be consumed by ODL and/or ONAP Jenkinses, doing further promotion.

Change-Id: Ice1736d65f3f2b26e849302fec2bb0c579da4a1c
Signed-off-by: Fatih Degirmenci <fdegir@gmail.com>
jjb/openci/create-cde.sh [new file with mode: 0755]
jjb/openci/create-clme.sh [new file with mode: 0755]
jjb/openci/openci-opnfv-daily-jobs.yaml [new file with mode: 0644]

diff --git a/jjb/openci/create-cde.sh b/jjb/openci/create-cde.sh
new file mode 100755 (executable)
index 0000000..ac16ab0
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 Ericsson AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+set -o errexit
+set -o nounset
+set -o pipefail
+
+# This script creates CompositionDefinedEvent
+# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
+# constructed on a single line. This is something that needs to be fixed properly
+
+cat << EOF > $WORKSPACE/event.properties
+type=$PUBLISH_EVENT_TYPE
+origin=$PUBLISH_EVENT_ORIGIN
+scenario=$DEPLOY_SCENARIO
+eventBody="{ 'type': '$EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'compositionName': '$DEPLOY_SCENARIO', 'compositionMetadataUrl': '$SCENARIO_METADATA' }"
+EOF
+echo "Constructed $EVENT_TYPE"
+echo "--------------------------------------------"
+cat $WORKSPACE/event.properties
+echo "--------------------------------------------"
diff --git a/jjb/openci/create-clme.sh b/jjb/openci/create-clme.sh
new file mode 100755 (executable)
index 0000000..85dd06d
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 Ericsson AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+set -o errexit
+set -o nounset
+set -o pipefail
+
+# This script creates ConfidenceLevelModifiedEvent
+# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
+# constructed on a single line. This is something that needs to be fixed properly
+
+cat << EOF > $WORKSPACE/event.properties
+type=$PUBLISH_EVENT_TYPE
+origin=$PUBLISH_EVENT_ORIGIN
+scenario=$DEPLOY_SCENARIO
+eventBody="{ 'type': '$EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'compositionName': '$DEPLOY_SCENARIO', 'compositionMetadataUrl': '$SCENARIO_METADATA', 'confidenceLevel': { $CONFIDENCE_LEVEL } }"
+EOF
+echo "Constructed $EVENT_TYPE"
+echo "--------------------------------------------"
+cat $WORKSPACE/event.properties
+echo "--------------------------------------------"
diff --git a/jjb/openci/openci-opnfv-daily-jobs.yaml b/jjb/openci/openci-opnfv-daily-jobs.yaml
new file mode 100644 (file)
index 0000000..e896149
--- /dev/null
@@ -0,0 +1,148 @@
+---
+- project:
+    name: openci-opnfv
+
+    project: '{name}'
+
+    stream:
+      - master:
+          branch: '{stream}'
+          gs-pathname: ''
+          disabled: false
+
+    scenario:
+      - 'os-odl-nofeature-ha':
+          origin: ODL
+      - 'k8-nosdn-onap-ha':
+          origin: ONAP
+
+    jobs:
+      - 'openci-opnfv-{scenario}-compose-daily-{stream}'
+      - 'openci-opnfv-{scenario}-test-daily-{stream}'
+
+- job-template:
+    name: 'openci-opnfv-{scenario}-compose-daily-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: false
+
+    parameters:
+      - string:
+          name: PUBLISH_EVENT_TYPE
+          default: CompositionDefinedEvent
+          description: 'The type of the event this job publishes'
+      - string:
+          name: PUBLISH_EVENT_ORIGIN
+          default: OPNFV
+          description: 'Originating community'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: '{scenario}'
+          description: 'The scenario that is composed'
+      - string:
+          name: SCENARIO_METADATA_LOCATION
+          default: https://url/to/scenario/metadata/on/opnfv/artifact/repo/$BUILD_NUMBER
+          description: 'The location of the scenario metadata'
+      - 'opnfv-build-defaults'
+
+    triggers:
+      - jms-messaging:
+          provider-name: openci.activemq
+          selector: CI_TYPE = 'custom'
+          checks:
+            - field: origin
+              expected-value: '{origin}'
+            - field: type
+              expected-value: 'ArtifactPublishedEvent'
+
+    builders:
+      - shell: |
+          #!/bin/bash
+
+          echo
+          echo "Triggered by $type"
+          echo "----------------------------------"
+          echo $CI_MESSAGE
+          echo "----------------------------------"
+      - shell:
+          !include-raw-escape: ./create-cde.sh
+      - inject:
+          properties-file: "$WORKSPACE/event.properties"
+
+    publishers:
+      - jms-messaging:
+          provider-name: openci.activemq
+          msg-type: Custom
+          msg-props: |
+            type=$type
+            origin=$origin
+          msg-content:
+            $eventBody
+
+- job-template:
+    name: 'openci-opnfv-{scenario}-test-daily-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: false
+
+    parameters:
+      - string:
+          name: PUBLISH_EVENT_TYPE
+          default: ConfidenceLevelModifiedEvent
+          description: 'The type of the event this job publishes'
+      - string:
+          name: PUBLISH_EVENT_ORIGIN
+          default: OPNFV
+          description: 'Originating community'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: '{scenario}'
+          description: 'The scenario that is composed'
+      - string:
+          name: SCENARIO_METADATA_LOCATION
+          default: https://url/to/scenario/metadata/on/opnfv/artifact/repo/$BUILD_NUMBER
+          description: 'The location of the scenario metadata'
+      - string:
+          name: CONFIDENCE_LEVEL
+          default: "'opnfvdaily': 'SUCCESS'"
+          description: 'The confidence level the published artifact gained'
+      - 'opnfv-build-defaults'
+
+    triggers:
+      - jms-messaging:
+          provider-name: openci.activemq
+          selector: CI_TYPE = 'custom'
+          checks:
+            - field: origin
+              expected-value: 'OPNFV'
+            - field: type
+              expected-value: 'CompositionDefinedEvent'
+            - field: scenario
+              expected-value: '{scenario}'
+
+    builders:
+      - shell: |
+          #!/bin/bash
+
+          echo
+          echo "Triggered by $type"
+          echo "----------------------------------"
+          echo $CI_MESSAGE
+          echo "----------------------------------"
+      - shell:
+          !include-raw-escape: ./create-clme.sh
+      - inject:
+          properties-file: "$WORKSPACE/event.properties"
+
+    publishers:
+      - jms-messaging:
+          provider-name: openci.activemq
+          msg-type: Custom
+          msg-props: |
+            type=$type
+            origin=$origin
+            scenario=$scenario
+          msg-content:
+            $eventBody