From df27251d91f471f335a09cb4e47127bdf4417275 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Mon, 14 Mar 2016 16:10:10 -0700 Subject: [PATCH] Enable pri0 crossgen build/tests per-commit, and pri1 by trigger phrase --- netci.groovy | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 129 insertions(+), 19 deletions(-) diff --git a/netci.groovy b/netci.groovy index 957f3e4..446177e 100644 --- a/netci.groovy +++ b/netci.groovy @@ -66,7 +66,7 @@ class Constants { 'gcstress0xc_minopts_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JITMinOpts' : '1', 'COMPlus_HeapVerify' : '1'] ] // This is the basic set of scenarios - def static basicScenarios = ['default', 'pri1', 'ilrt'] + def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r'] // This is the set of configurations def static configurationList = ['Debug', 'Checked', 'Release'] // This is the set of architectures @@ -216,8 +216,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, // Check scenario. switch (scenario) { case 'default': - switch (architecture) - { + switch (architecture) { case 'x64': case 'x86': if (isFlowJob || os == 'Windows_NT' || !(os in Constants.crossList)) { @@ -252,6 +251,27 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } } break + case 'r2r': + //r2r jobs that aren't pri1 can only be triggered by phrase + break + case 'pri1r2r': + //pri1 r2r gets a push trigger for checked/release + if (configuration == 'Checked' || configuration == 'Release') { + assert (os == 'Windows_NT') || (os in Constants.crossList) + if (architecture == 'x64') { + //Flow jobs should be Windows, Ubuntu, OSX, or CentOS + if (isFlowJob || os == 'Windows_NT') { + Utilities.addGithubPushTrigger(job) + } + } + // For x86, only add per-commit jobs for Windows + else if (architecture == 'x86') { + if (os == 'Windows_NT') { + Utilities.addGithubPushTrigger(job) + } + } + } + break case 'ilrt': // ILASM/ILDASM roundtrip one gets a daily build, and only for release if (architecture == 'x64' && configuration == 'Release' && os != 'CentOS7.1') { @@ -369,6 +389,16 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} IL RoundTrip Build and Test", "(?i).*test\\W+${os}\\W+${scenario}.*") } break + case 'r2r': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'pri1r2r': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + } + break case 'minopts': assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)", @@ -468,9 +498,25 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } break case 'CentOS7.1': - if (configuration == 'Checked' && isFlowJob && scenario == 'pri1' && architecture == 'x64') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Priority 1 Build and Test", "(?i).*test\\W+${os}\\W+${scenario}.*") - } + switch (scenario) { + case 'pri1': + if (configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Priority 1 Build and Test", "(?i).*test\\W+${os}\\W+${scenario}.*") + } + break + case 'r2r': + if (configuration == 'Checked' || configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'pri1r2r': + if (configuration == 'Checked' || configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + } + break + default: + break + } case 'OpenSUSE13.2': if (configuration == 'Checked' && !isFlowJob && scenario == 'default') { Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build") @@ -494,6 +540,16 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} IL RoundTrip Build and Test", "(?i).*test\\W+${os}\\W+${scenario}.*") } break + case 'r2r': + if (configuration == 'Checked' || configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'pri1r2r': + if (configuration == 'Checked' || configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + } + break case 'minopts': assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)", @@ -620,16 +676,32 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } break case 'x86': - assert scenario == 'default' + assert (scenario == 'default' || scenario == 'r2r' || scenario == 'pri1r2r') // For windows, x86 runs by default - if (os == 'Windows_NT') { - if (configuration != 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Legacy Backend Build and Test") + if (scenario == 'default') { + if (os == 'Windows_NT') { + if (configuration != 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Legacy Backend Build and Test") + } + } + else { + // default trigger + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build", "(?i).*test\\W+${architecture}\\W+${osGroup}.*") } } - else { - // default trigger - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build", "(?i).*test\\W+${architecture}\\W+${osGroup}.*") + else if (scenario == 'r2r') { + if (os == 'Windows_NT') { + if (configuration != 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Legacy Backend Build & Test", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + } + } + else if (scenario == 'pri1r2r') { + if (os == 'Windows_NT') { + if (configuration != 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Legacy Backend Build & Test", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + } } break default: @@ -683,7 +755,6 @@ combinedScenarios.each { scenario -> assert false break } - // Skip scenarios (blanket skipping for jit stress modes, which are good most everywhere // with checked builds def enableCorefxTesting = false @@ -729,6 +800,26 @@ combinedScenarios.each { scenario -> return } break + case 'r2r': + // The r2r build isn't necessary except for os's in the cross list or Windows_NT (native OS runs) + if (os != 'Windows_NT' && !(os in Constants.crossList)) { + return + } + // only x64 or x86 for now + if (architecture != 'x64' && architecture != 'x86') { + return + } + break + case 'pri1r2r': + // The pri1 r2r build isn't necessary except for os's in the cross list or Windows_NT (native OS runs) + if (os != 'Windows_NT' && !(os in Constants.crossList)) { + return + } + // only x64 or x86 for now + if (architecture != 'x64' && architecture != 'x86') { + return + } + break case 'default': // Nothing skipped break @@ -762,7 +853,7 @@ combinedScenarios.each { scenario -> case 'x64': case 'x86': - if (scenario == 'default' || Constants.jitStressModeScenarios.containsKey(scenario)) { + if (Constants.jitStressModeScenarios.containsKey(scenario) || scenario == 'default') { buildOpts = enableCorefxTesting ? 'skiptests' : '' buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} ${buildOpts}" } @@ -777,10 +868,18 @@ combinedScenarios.each { scenario -> buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} Priority 1" } else if (scenario == 'ilrt') { - // First do the build with skiptestbuild and then build the tests with ilasm roundtrip - buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} skiptestbuild" + // First do the build with skiptests and then build the tests with ilasm roundtrip + buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} skiptests" buildCommands += "tests\\buildtest.cmd ${lowerConfiguration} ${architecture} ilasmroundtrip" } + else if (scenario == 'r2r') { + buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} docrossgen skiptests" + buildCommands += "tests\\buildtest.cmd ${lowerConfiguration} ${architecture} crossgen" + } + else if (scenario == 'pri1r2r') { + buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} docrossgen skiptests" + buildCommands += "tests\\buildtest.cmd ${lowerConfiguration} ${architecture} crossgen Priority 1" + } else { println("Unknown scenario: ${scenario}") assert false @@ -977,7 +1076,7 @@ combinedScenarios.each { scenario -> else { buildCommands.each { buildCommand -> shell(buildCommand) - } + } } } } @@ -1020,7 +1119,18 @@ combinedScenarios.each { scenario -> // Nothing skipped break case 'ilrt': - // Nothing skipped + break + case 'r2r': + //Skip configs that aren't Checked or Release (so just Debug, for now) + if (configuration != 'Checked' && configuration != 'Release') { + return + } + break + case 'pri1r2r': + //Skip configs that aren't Checked or Release (so just Debug, for now) + if (configuration != 'Checked' && configuration != 'Release') { + return + } break case 'default': // Nothing skipped -- 2.7.4