diff options
-rwxr-xr-x | jjb/xci/xci-set-scenario.sh | 64 | ||||
-rw-r--r-- | jjb/xci/xci-verify-jobs.yml | 30 |
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: |