xci: Fix scenario determination logic
[releng.git] / jjb / xci / xci-set-scenario.sh
index 59c1ebf..237eb31 100755 (executable)
@@ -53,11 +53,12 @@ function override_scenario() {
     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 "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
+        log_scenario_properties
         exit 0
     fi
 
@@ -70,11 +71,12 @@ function override_scenario() {
             echo "Installer type or deploy scenario is not specified. Falling back to programmatically determining them."
         else
             echo "Recording the installer '$INSTALLER_TYPE' and scenario '$DEPLOY_SCENARIO' for downstream jobs"
-            echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties
+            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
+            log_scenario_properties
             exit 0
         fi
     else
@@ -153,6 +155,49 @@ function determine_scenario() {
     SCENARIO_SHA=$(cd $WORK_DIRECTORY/$GERRIT_PROJECT && git rev-parse HEAD)
 }
 
+# This function allows developers to specify the specific XCI flavor for the
+# impacted scenario by adding the XCI Flavor info about the specific scenario.
+# This results in either skipping the real verification
+# totally or skipping the determining the installer and scenario programmatically.
+# It is important to note that this feature is only available to generic scenarios
+# and only single installer/scenario pair is allowed.
+# The input in commit message should be placed at the end of the commit message body,
+# before the signed-off and change-id lines.
+#
+# Pattern to be searched in Commit Message
+#   xci-flavor:<xci-flavor>
+# Examples:
+#   xci-flavor:noha
+function override_xci_flavor() {
+    echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC"
+
+    # process commit message for XCI Flavor
+    if [[ "$GERRIT_CHANGE_COMMIT_MESSAGE" =~ "xci-flavor:" ]]; then
+        XCI_FLAVOR=$(echo $GERRIT_CHANGE_COMMIT_MESSAGE | awk '/xci-flavor:/' RS=" " | cut -d":" -f2)
+
+        if [[ -z "$XCI_FLAVOR" ]]; then
+            XCI_FLAVOR='mini'
+            echo "XCI flavor is not specified. The default is specified instead (i.e. mini). Falling back to programmatically determining them."
+            echo "XCI_FLAVOR=mini" >> $WORK_DIRECTORY/scenario.properties
+        else
+            echo "Recording the XCI flavor '$XCI_FLAVOR' for downstream jobs"
+            echo "XCI_FLAVOR=$XCI_FLAVOR" >> $WORK_DIRECTORY/scenario.properties
+        fi
+    else
+        XCI_FLAVOR='mini'
+        echo "XCI flavor is not specified. The default is specified instead (i.e. mini). Falling back to programmatically determining them."
+        echo "XCI_FLAVOR=mini" >> $WORK_DIRECTORY/scenario.properties
+    fi
+
+}
+
+function log_scenario_properties() {
+    echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC"
+    echo "-------------------------------------------------------------------------"
+    cat $WORK_DIRECTORY/scenario.properties
+    echo "-------------------------------------------------------------------------"
+}
+
 echo "Determining the impacted scenario"
 
 declare -a DEPLOY_SCENARIO
@@ -170,6 +215,7 @@ if [[ $GERRIT_PROJECT == "releng-xci" ]]; then
 else
     determine_scenario
 fi
+override_xci_flavor
 override_scenario
 
 # ensure single scenario is impacted