X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fxci%2Fxci-set-scenario.sh;h=c28093d274941d16cca23188080928832f623e8b;hb=4ee0e0934a6181866cdea70a9bb0c05728e31c7f;hp=c602957a99ecf9ff975f997ed5b4bddc946e6874;hpb=5d96264c472215f346e4e7cf44ba3ea6a51d76d6;p=releng.git diff --git a/jjb/xci/xci-set-scenario.sh b/jjb/xci/xci-set-scenario.sh index c602957a9..c28093d27 100755 --- a/jjb/xci/xci-set-scenario.sh +++ b/jjb/xci/xci-set-scenario.sh @@ -7,7 +7,6 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -set -o errexit set -o pipefail #---------------------------------------------------------------------- @@ -42,20 +41,22 @@ set -o pipefail function override_generic_scenario() { echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC" + # ensure the metadata we record is consistent for all types of patches including skipped ones + # extract releng-xci sha + XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD) + + # extract scenario sha which is same as releng-xci sha for generic scenarios + SCENARIO_SHA=$XCI_SHA + # process topic branch names - if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then - # skip the real verification - echo "Skipping verify!" - echo "INSTALLER_TYPE=osa" > $WORK_DIRECTORY/scenario.properties - echo "DEPLOY_SCENARIO=os-nosdn-nofeature" >> $WORK_DIRECTORY/scenario.properties - exit 0 - elif [[ "$GERRIT_TOPIC" =~ 'force-verify' ]]; then - # Run the deployment with default installer and scenario when multiple things change - # and we want to force that. - echo "Recording the installer 'osa' and scenario 'os-nosdn-nofeature' for downstream jobs" - echo "Forcing CI verification of default scenario and installer!" + if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment|force-verify ]]; then + [[ "$GERRIT_TOPIC" =~ force-verify ]] && echo "Forcing CI verification using default scenario and installer!" + [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]] && echo "Skipping verification!" echo "INSTALLER_TYPE=osa" > $WORK_DIRECTORY/scenario.properties echo "DEPLOY_SCENARIO=os-nosdn-nofeature" >> $WORK_DIRECTORY/scenario.properties + echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties + echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties + echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties exit 0 fi @@ -70,6 +71,9 @@ function override_generic_scenario() { echo "Recording the installer '$INSTALLER_TYPE' and scenario '$DEPLOY_SCENARIO' for downstream jobs" echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> $WORK_DIRECTORY/scenario.properties + echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties + echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties + echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties exit 0 fi else @@ -91,29 +95,33 @@ function determine_generic_scenario() { # get the changeset cd $WORKSPACE - CHANGESET=$(git diff HEAD^..HEAD --name-only) - for CHANGED_FILE in $CHANGESET; do - case $CHANGED_FILE in - *k8-nosdn*|*kubespray*) - [[ ${DEPLOY_SCENARIO[@]} =~ "k8-nosdn-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='k8-nosdn-nofeature' - ;; - *os-odl*) - [[ ${DEPLOY_SCENARIO[@]} =~ "os-odl-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-odl-nofeature' - ;; - *os-nosdn*|*osa*) - [[ ${DEPLOY_SCENARIO[@]} =~ "os-nosdn-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-nosdn-nofeature' + SCENARIOS=$(git diff HEAD^..HEAD --name-only -- 'xci/scenarios' | cut -d "/" -f 3 | uniq) + # We need to set default scenario for changes that mess with installers + INSTALLERS=$(git diff HEAD^..HEAD --name-only -- 'xci/installer' | cut -d "/" -f 3 | uniq) + for CHANGED_SCENARIO in $SCENARIOS; do + DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]=$CHANGED_SCENARIO + done + for CHANGED_INSTALLER in $INSTALLERS; do + case $CHANGED_INSTALLER in + kubespray) + DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='k8-nosdn-nofeature' ;; + # Default case (including OSA changes) *) - [[ ${DEPLOY_SCENARIO[@]} =~ "os-nosdn-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-nosdn-nofeature' + DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-nosdn-nofeature' ;; - esac + esac done + # For all other changes, we only need to set a default scenario if it's not set already + if git diff HEAD^..HEAD --name-only | grep -q -v 'xci/installer\|xci/scenario'; then + [[ ${#DEPLOY_SCENARIO[@]} -eq 0 ]] && DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-nosdn-nofeature' + fi # extract releng-xci sha - RELENG_XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD) + XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD) # extract scenario sha which is same as releng-xci sha for generic scenarios - SCENARIO_SHA=$RELENG_XCI_SHA + SCENARIO_SHA=$XCI_SHA } # This function determines the impacted external scenario by processing the Gerrit @@ -142,7 +150,7 @@ function determine_external_scenario() { DEPLOY_SCENARIO+=$(git diff HEAD^..HEAD --name-only | grep scenarios | awk -F '[/|/]' '{print $2}' | uniq) # extract releng-xci sha - RELENG_XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD) + XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD) # extract scenario sha SCENARIO_SHA=$(cd $WORK_DIRECTORY/$GERRIT_PROJECT && git rev-parse HEAD) @@ -194,8 +202,9 @@ esac echo "Recording the installer '$INSTALLER_TYPE' and scenario '${DEPLOY_SCENARIO[0]}' and SHAs for downstream jobs" echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> $WORK_DIRECTORY/scenario.properties -echo "RELENG_XCI_SHA=$RELENG_XCI_SHA" >> $WORK_DIRECTORY/scenario.properties +echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties +echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties # skip scenario support check if the job is promotion job if [[ "$JOB_NAME" =~ (os|k8) ]]; then