summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xjjb/xci/xci-set-scenario.sh64
-rw-r--r--jjb/xci/xci-verify-jobs.yml30
2 files changed, 89 insertions, 5 deletions
diff --git a/jjb/xci/xci-set-scenario.sh b/jjb/xci/xci-set-scenario.sh
new file mode 100755
index 000000000..25f904b69
--- /dev/null
+++ b/jjb/xci/xci-set-scenario.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 SUSE 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 is used by CI and executed by Jenkins jobs.
+# You are not supposed to use this script manually if you don't know
+# what you are doing.
+#----------------------------------------------------------------------
+
+# skip the healthcheck if the patch doesn't impact the deployment
+if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then
+ echo "Skipping the healthcheck!"
+ exit 0
+fi
+
+# skip the deployment if the scenario is not supported on this distro
+OPNFV_SCENARIO_REQUIREMENTS=$WORKSPACE/xci/opnfv-scenario-requirements.yml
+if ! sed -n "/^- scenario: $DEPLOY_SCENARIO$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENTS | grep -q $DISTRO; then
+ echo "# SKIPPED: Scenario $DEPLOY_SCENARIO is NOT supported on $DISTRO"
+ exit 0
+fi
+
+# if change is coming to releng-xci, continue as usual until that part is fixed as well
+if [[ $GERRIT_PROJECT == "releng-xci" ]]; then
+ # save the scenario name into java properties file to be injected to downstream jobs via envInject
+ echo "Recording scenario name for downstream jobs"
+ rm /tmp/$GERRIT_CHANGE_NUMBER/scenario.properties
+ echo "DEPLOY_SCENARIO=os-nosdn-nofeature" > /tmp/$GERRIT_CHANGE_NUMBER/scenario.properties
+ exit 0
+fi
+
+# projects develop different scenarios and jobs need to know which scenario got the
+# change under test so the jobs can deploy and test the right scenario.
+# we need to fetch the change and look at the changeset to find out the scenario instead
+# of hardcoding scenario per project.
+PROJECT_CLONE_LOCATION=/tmp/${GERRIT_PROJECT}_${GERRIT_CHANGE_NUMBER}
+rm -rf $PROJECT_CLONE_LOCATION
+git clone https://gerrit.opnfv.org/gerrit/$GERRIT_PROJECT $PROJECT_CLONE_LOCATION
+cd $PROJECT_CLONE_LOCATION
+git fetch https://gerrit.opnfv.org/gerrit/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD
+DEPLOY_SCENARIO=$(git diff HEAD^..HEAD --name-only | grep scenarios | sed -r 's/scenarios\/(.*?)\/role.*/\1/' | uniq)
+
+# ensure single scenario is impacted
+if [[ $(echo $DEPLOY_SCENARIO | wc -w) != 1 ]]; then
+ echo "Change impacts multiple scenarios!"
+ echo "XCI doesn't support testing of changes that impact multiple scenarios currently."
+ echo "Please split your change into multiple different/dependent changes, each modifying single scenario."
+ exit 1
+fi
+
+# save the scenario name into java properties file to be injected to downstream jobs via envInject
+echo "Recording scenario name for downstream jobs"
+rm /tmp/$GERRIT_CHANGE_NUMBER/scenario.properties
+echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" > /tmp/$GERRIT_CHANGE_NUMBER/scenario.properties
diff --git a/jjb/xci/xci-verify-jobs.yml b/jjb/xci/xci-verify-jobs.yml
index c6b6bc43b..3e56ef4dd 100644
--- a/jjb/xci/xci-verify-jobs.yml
+++ b/jjb/xci/xci-verify-jobs.yml
@@ -102,7 +102,7 @@
comment-contains-value: 'reverify'
projects:
- project-compare-type: 'ANT'
- project-pattern: '{project}'
+ project-pattern: 'releng-xci'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
@@ -110,6 +110,15 @@
forbidden-file-paths:
- compare-type: ANT
pattern: 'xci/scripts/vm/**'
+ - project-compare-type: 'ANT'
+ project-pattern: 'sfc|bgpvpn'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ disable-strict-forbidden-file-verification: 'true'
+ file-paths:
+ - compare-type: ANT
+ pattern: 'scenarios/**'
readable-message: true
custom-url: '* $JOB_NAME $BUILD_URL'
skip-vote:
@@ -130,12 +139,15 @@
default: 'true'
- string:
name: GIT_BASE
- default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ default: https://gerrit.opnfv.org/gerrit/releng-xci
description: 'Git URL to use on this Jenkins Slave'
builders:
+ - 'xci-verify-set-scenario-macro'
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/scenario.properties"
- description-setter:
- description: "Built on $NODE_NAME"
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- multijob:
name: deploy
condition: SUCCESSFUL
@@ -221,10 +233,12 @@
default: 'osa'
- string:
name: GIT_BASE
- default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ default: https://gerrit.opnfv.org/gerrit/releng-xci
description: 'Git URL to use on this Jenkins Slave'
wrappers:
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/scenario.properties"
- ssh-agent-wrapper
- build-timeout:
timeout: 240
@@ -235,13 +249,19 @@
builders:
- description-setter:
- description: "Built on $NODE_NAME"
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- 'xci-verify-{phase}-macro'
# -------------------------------
# builder macros
# -------------------------------
- builder:
+ name: 'xci-verify-set-scenario-macro'
+ builders:
+ - shell:
+ !include-raw: ./xci-set-scenario.sh
+
+- builder:
name: 'xci-verify-deploy-macro'
builders:
- shell: