'armem': [
'Checked'
]
- ],
+ ]
]
// A set of scenarios that are valid for arm/arm64 tests run on hardware. This is a map from valid scenario name
}
def validOsPrTriggerArchConfigs = Constants.prTriggeredValidInnerLoopCombos[os]
-
- if (validOsPrTriggerArchConfigs == null) {
- return false
- }
-
- if (validOsPrTriggerArchConfigs[architecture] != null) {
+ if (validOsPrTriggerArchConfigs != null) {
def validOsPrTriggerConfigs = validOsPrTriggerArchConfigs[architecture]
-
- if (!(configuration in validOsPrTriggerConfigs)) {
- return false
+ if (validOsPrTriggerConfigs != null) {
+ if (configuration in validOsPrTriggerConfigs) {
+ return true
+ }
}
- } else {
- return false
}
- return true
+ return false
}
// This means the job builds and runs the 'Pri0' test set. This does not mean the job is
}
def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def os, def configuration, def scenario, def isFlowJob, def isWindowsBuildOnlyJob, def bidailyCrossList) {
+ def isNormalOrInnerloop = (scenario == "normal" || scenario == "innerloop")
// Limited hardware is restricted for non-PR triggers to certain branches.
if (jobRequiresLimitedHardware(architecture, os) && (!(branch in Constants.LimitedHardwareBranches))) {
break
case 'arm64':
if (os == 'Windows_NT') {
- // Only the flow jobs get push triggers; the build and test jobs are triggered by the flow job.
- if (isFlowJob) {
+ if (isFlowJob || (isNormalOrInnerloop && (configuration == 'Debug'))) {
// We would normally want a per-push trigger, but with limited hardware we can't keep up.
// Do the builds daily.
addPeriodicTriggerHelper(job, '@daily')
break
case 'arm':
if (os == 'Windows_NT') {
- // Only the flow jobs get triggers; the build and test jobs are triggered by the flow job.
- if (isFlowJob) {
+ if (isFlowJob || (isNormalOrInnerloop && (configuration == 'Debug'))) {
// We would normally want a push trigger, but with limited hardware we can't keep up.
// Do the builds daily.
addPeriodicTriggerHelper(job, '@daily')
case 'arm': // editor brace matching: {
- // Triggers on the non-flow jobs aren't necessary
- if (!isFlowJob) {
- break
- }
-
// Set up a private trigger
def contextString = "${os} ${architecture} Cross ${configuration}"
def triggerString = "(?i).*test\\W+${os}\\W+${architecture}\\W+Cross\\W+${configuration}"
switch (os) {
case 'Ubuntu':
+ // Triggers on the non-flow jobs aren't necessary
+ if (!isFlowJob) {
+ break
+ }
+
if (scenario == 'innerloop' || scenario == 'no_tiered_compilation_innerloop') {
if (configuration == 'Checked') {
Utilities.addGithubPRTriggerForBranch(job, branch, contextString)
break
case 'Windows_NT':
+ assert isArmWindowsScenario(scenario)
+
+ // For Debug normal/innerloop scenario, we don't do test runs, so we don't use flow jobs. That means we need a trigger for
+ // the non-flow Build job. All others need a trigger on the flow job.
+ def needsFlowJobTrigger = !(isNormalOrInnerloop && (configuration == 'Debug'))
+ if (isFlowJob != needsFlowJobTrigger) {
+ break
+ }
+
switch (scenario) {
case 'innerloop':
- // Only Checked is an innerloop trigger.
- if (configuration == 'Checked')
- {
+ if (configuration == 'Checked') {
Utilities.addDefaultPrivateGithubPRTriggerForBranch(job, branch, contextString, null, arm64Users)
}
break
- case 'normal':
- Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, triggerString, null, arm64Users)
- break
default:
- // Stress jobs will use this code path.
- if (isArmWindowsScenario(scenario)) {
- Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, triggerString, null, arm64Users)
- }
+ Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, triggerString, null, arm64Users)
break
}
break
switch (os) {
case 'Ubuntu':
- case 'Ubuntu16.04':
switch (scenario) {
case 'innerloop':
if (configuration == 'Debug' && !isFlowJob) {
- Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Innerloop Build")
+ Utilities.addGithubPRTriggerForBranch(job, branch, contextString)
}
-
break
case 'normal':
- Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test", triggerString)
+ Utilities.addGithubPRTriggerForBranch(job, branch, contextString, triggerString)
break
default:
if (isR2RScenario(scenario)) {
break
case 'Windows_NT':
- // Triggers on the non-flow jobs aren't necessary here
- if (!isFlowJob) {
+ assert isArmWindowsScenario(scenario)
+
+ // For Debug normal/innerloop scenario, we don't do test runs, so we don't use flow jobs. That means we need a trigger for
+ // the non-flow Build job. All others need a trigger on the flow job.
+ def needsFlowJobTrigger = !(isNormalOrInnerloop && (configuration == 'Debug'))
+ if (isFlowJob != needsFlowJobTrigger) {
break
}
- assert isArmWindowsScenario(scenario)
switch (scenario) {
case 'innerloop':
if (configuration == 'Checked') {
Utilities.addDefaultPrivateGithubPRTriggerForBranch(job, branch, contextString, null, arm64Users)
}
-
- break
- case 'normal':
- Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, triggerString, null, arm64Users)
break
default:
- // Stress jobs will use this code path.
- if (isArmWindowsScenario(scenario)) {
- Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, triggerString, null, arm64Users)
- }
+ Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, triggerString, null, arm64Users)
break
}
break
switch (architecture) {
case 'arm64':
- if (os != "Ubuntu" && os != "Windows_NT") {
- return false
- }
- break
case 'arm':
if (os != "Ubuntu" && os != "Windows_NT") {
return false
// Filter based on scenario in OS.
if (os == 'Windows_NT') {
+ assert architecture == 'arm' || architecture == 'arm64'
if (!isArmWindowsScenario(scenario)) {
return false
}
+ if (isNormalOrInnerloop && (configuration == 'Debug')) {
+ // The arm32/arm64 Debug configuration for innerloop/normal scenario is a special case: it does a build only, and no test run.
+ // To do that, it doesn't require a flow job.
+ return false
+ }
}
else {
// Non-Windows
case 'formatting':
return false
+
case 'illink':
if (os != 'Windows_NT' && os != 'Ubuntu') {
return false
break
case 'innerloop':
- // Nothing skipped
if (!isValidPrTriggeredInnerLoopJob(os, architecture, configuration, false)) {
return false
}