@@ -18,18 +18,31 @@ def msbuildTypeMap = [
1818
1919// convert `machine` parameter to OS component of PR task name
2020def machineTypeToOSTagMap = [
21- ' Windows_NT' : ' Windows' , // Windows Server 2012 R2, equivalent to Windows 8.1 (aka Blue)
21+ ' Windows 7' : ' Windows 7' , // 'latest-or-auto' -> Windows Server 2008 R2 ~= Windows 7
22+ ' Windows_NT' : ' Windows 8.1' , // 'latest-or-auto' -> Windows Server 2012 R2 ~= Windows 8.1 aka Blue
23+ ' windows.10.amd64.clientrs4.devex.open' : ' Windows 10' , // = Windows 10 RS4 with Dev 15.7
2224 ' Ubuntu16.04' : ' Ubuntu' ,
2325 ' OSX10.12' : ' OSX'
2426]
2527
28+ def defaultMachineTag = ' latest-or-auto'
29+
30+ def legacyWindows7Machine = ' Windows 7'
31+ def legacyWindows7MachineTag = defaultMachineTag
32+
33+ def legacyWindows8Machine = ' Windows_NT'
34+ def legacyWindows8MachineTag = defaultMachineTag
35+
36+ def latestWindowsMachine = ' windows.10.amd64.clientrs4.devex.open' // Windows 10 RS4 with Dev 15.7
37+ def latestWindowsMachineTag = null // all information is included in the machine name above
38+
2639def dailyRegex = ' dailies'
2740
2841// ---------------
2942// HELPER CLOSURES
3043// ---------------
3144
32- def CreateBuildTask = { isPR , buildArch , buildType , machine , configTag , buildExtra , testExtra , runCodeAnalysis , excludeConfigIf , nonDefaultTaskSetup ->
45+ def CreateBuildTask = { isPR , buildArch , buildType , machine , machineTag , configTag , buildExtra , testExtra , runCodeAnalysis , excludeConfigIf , nonDefaultTaskSetup ->
3346 if (excludeConfigIf && excludeConfigIf(isPR, buildArch, buildType)) {
3447 return // early exit: we don't want to create a job for this configuration
3548 }
@@ -75,7 +88,13 @@ def CreateBuildTask = { isPR, buildArch, buildType, machine, configTag, buildExt
7588 false , // doNotFailIfNothingArchived=false ~= failIfNothingArchived
7689 false ) // archiveOnlyIfSuccessful=false ~= archiveAlways
7790
78- Utilities . setMachineAffinity(newJob, machine, ' latest-or-auto' )
91+ if (machineTag == null ) {
92+ // note: this is a different overload and not equivalent to calling setMachineAffinity(_,_,null)
93+ Utilities . setMachineAffinity(newJob, machine)
94+ } else {
95+ Utilities . setMachineAffinity(newJob, machine, machineTag)
96+ }
97+
7998 Utilities . standardJobSetup(newJob, project, isPR, " */${ branch} " )
8099
81100 if (nonDefaultTaskSetup == null ) {
@@ -95,11 +114,11 @@ def CreateBuildTask = { isPR, buildArch, buildType, machine, configTag, buildExt
95114 }
96115}
97116
98- def CreateBuildTasks = { machine , configTag , buildExtra , testExtra , runCodeAnalysis , excludeConfigIf , nonDefaultTaskSetup ->
117+ def CreateBuildTasks = { machine , machineTag , configTag , buildExtra , testExtra , runCodeAnalysis , excludeConfigIf , nonDefaultTaskSetup ->
99118 [true , false ]. each { isPR ->
100119 [' x86' , ' x64' , ' arm' ]. each { buildArch ->
101120 [' debug' , ' test' , ' release' ]. each { buildType ->
102- CreateBuildTask (isPR, buildArch, buildType, machine, configTag, buildExtra, testExtra, runCodeAnalysis, excludeConfigIf, nonDefaultTaskSetup)
121+ CreateBuildTask (isPR, buildArch, buildType, machine, machineTag, configTag, buildExtra, testExtra, runCodeAnalysis, excludeConfigIf, nonDefaultTaskSetup)
103122 }
104123 }
105124 }
@@ -142,7 +161,7 @@ def CreateXPlatBuildTask = { isPR, buildType, staticBuild, machine, platform, co
142161 true , // doNotFailIfNothingArchived=false ~= failIfNothingArchived (true ~= doNotFail)
143162 false ) // archiveOnlyIfSuccessful=false ~= archiveAlways
144163
145- Utilities . setMachineAffinity(newJob, machine, ' latest-or-auto ' )
164+ Utilities . setMachineAffinity(newJob, machine, defaultMachineTag )
146165 Utilities . standardJobSetup(newJob, project, isPR, " */${ branch} " )
147166
148167 if (nonDefaultTaskSetup == null ) {
@@ -213,47 +232,83 @@ def CreateStyleCheckTasks = { taskString, taskName, checkName ->
213232 Utilities . addGithubPushTrigger(newJob)
214233 }
215234
216- Utilities . setMachineAffinity(newJob, ' Ubuntu16.04' , ' latest-or-auto ' )
235+ Utilities . setMachineAffinity(newJob, ' Ubuntu16.04' , defaultMachineTag )
217236 }
218237}
219238
220239// ----------------
221240// INNER LOOP TASKS
222241// ----------------
223242
224- CreateBuildTasks (' Windows_NT' , null , null , " -winBlue" , true , null , null )
243+ // The latest machine seems to have a configuration problem preventing us from building ARM.
244+ // For now, build ARM on the LKG config, Legacy Windows 8.1 (Blue) config.
245+ // TODO When the configuration is updated, unify this config split.
246+ CreateBuildTasks (latestWindowsMachine, latestWindowsMachineTag, null , null , " -win10" , true ,
247+ /* excludeConfigIf */ { isPR , buildArch , buildType -> (buildArch == ' arm' ) }, null )
248+ CreateBuildTasks (legacyWindows8Machine, legacyWindows8MachineTag, null , null , " -winBlue" , true ,
249+ /* excludeConfigIf */ { isPR , buildArch , buildType -> (buildArch != ' arm' ) }, null )
225250
226251// Add some additional daily configs to trigger per-PR as a quality gate:
227252// x64_debug Slow Tests
228253CreateBuildTask (true , ' x64' , ' debug' ,
229- ' Windows_NT ' , ' ci_slow' , null , ' -winBlue -includeSlow' , false , null , null )
254+ latestWindowsMachine, latestWindowsMachineTag, ' ci_slow' , null , ' -win10 -includeSlow' , false , null , null )
230255// x64_debug DisableJIT
231256CreateBuildTask (true , ' x64' , ' debug' ,
232- ' Windows_NT ' , ' ci_disablejit' , ' "/p:BuildJIT=false"' , ' -winBlue -disablejit' , false , null , null )
257+ latestWindowsMachine, latestWindowsMachineTag, ' ci_disablejit' , ' "/p:BuildJIT=false"' , ' -win10 -disablejit' , false , null , null )
233258// x64_debug Lite
234259CreateBuildTask (true , ' x64' , ' debug' ,
235- ' Windows_NT' , ' ci_lite' , ' "/p:BuildLite=true"' , ' -winBlue -lite' , false , null , null )
260+ latestWindowsMachine, latestWindowsMachineTag, ' ci_lite' , ' "/p:BuildLite=true"' , ' -win10 -lite' , false , null , null )
261+ // x64_debug Legacy (Windows 7)
262+ CreateBuildTask (true , ' x64' , ' debug' ,
263+ legacyWindows7Machine, legacyWindows7MachineTag, ' ci_legacy7' , ' msbuild14' , ' -win7 -includeSlow' , false , null , null )
264+ // x64_debug Legacy (Windows 8.1 (Blue))
265+ CreateBuildTask (true , ' x64' , ' debug' ,
266+ legacyWindows8Machine, legacyWindows8MachineTag, ' ci_legacy8' , ' msbuild14' , ' -winBlue -includeSlow' , false , null , null )
236267
237268// -----------------
238269// DAILY BUILD TASKS
239270// -----------------
240271
241272if (! branch. endsWith(' -ci' )) {
242- // build and test on the usual configuration (VS 2015) with -includeSlow
243- CreateBuildTasks (' Windows_NT' , ' daily_slow' , null , ' -winBlue -includeSlow' , false ,
273+ // build and test on the legacy configuration (Windows 7 + VS 2015 (Dev14))
274+ CreateBuildTasks (legacyWindows7Machine, legacyWindows7MachineTag, ' daily_legacy7' , ' msbuild14' , ' -win7 -includeSlow' , false ,
275+ /* excludeConfigIf */ { isPR , buildArch , buildType -> (buildArch == ' arm' ) },
276+ /* nonDefaultTaskSetup */ { newJob , isPR , config ->
277+ DailyBuildTaskSetup (newJob, isPR,
278+ " Windows 7 ${ config} " ,
279+ ' legacy7?\\ s+tests)' )})
280+
281+ // build and test on the legacy configuration (Windows 8.1 (Blue) + VS 2015 (Dev14))
282+ CreateBuildTasks (legacyWindows8Machine, legacyWindows8MachineTag, ' daily_legacy8' , ' msbuild14' , ' -winBlue -includeSlow' , false ,
283+ /* excludeConfigIf */ { isPR , buildArch , buildType -> (buildArch == ' arm' ) },
284+ /* nonDefaultTaskSetup */ { newJob , isPR , config ->
285+ DailyBuildTaskSetup (newJob, isPR,
286+ " Windows 8 ${ config} " ,
287+ ' legacy8?\\ s+tests' )})
288+
289+ // build and test on the latest configuration (RS4 + VS 2017 Dev 15.7) with -includeSlow
290+ CreateBuildTasks (latestWindowsMachine, latestWindowsMachineTag, ' daily_slow' , null , ' -win10 -includeSlow' , false ,
244291 /* excludeConfigIf */ null ,
245292 /* nonDefaultTaskSetup */ { newJob , isPR , config ->
246293 DailyBuildTaskSetup (newJob, isPR,
247294 " Windows ${ config} " ,
248295 ' slow\\ s+tests' )})
249296
250- // build and test on the usual configuration (VS 2015 ) with JIT disabled
251- CreateBuildTasks (' Windows_NT ' , ' daily_disablejit' , ' "/p:BuildJIT=false"' , ' -winBlue -disablejit' , true ,
297+ // build and test on the latest configuration (RS4 + VS 2017 Dev 15.7 ) with JIT disabled
298+ CreateBuildTasks (latestWindowsMachine, latestWindowsMachineTag, ' daily_disablejit' , ' "/p:BuildJIT=false"' , ' -win10 -disablejit' , true ,
252299 /* excludeConfigIf */ null ,
253300 /* nonDefaultTaskSetup */ { newJob , isPR , config ->
254301 DailyBuildTaskSetup (newJob, isPR,
255302 " Windows ${ config} " ,
256303 ' (disablejit|nojit)\\ s+tests' )})
304+
305+ // build and test on the latest configuration (RS4 + VS 2017 Dev 15.7) with Lite build
306+ CreateBuildTasks (latestWindowsMachine, latestWindowsMachineTag, ' daily_lite' , ' "/p:BuildLite=true"' , ' -win10 -lite' , true ,
307+ /* excludeConfigIf */ null ,
308+ /* nonDefaultTaskSetup */ { newJob , isPR , config ->
309+ DailyBuildTaskSetup (newJob, isPR,
310+ " Windows ${ config} " ,
311+ ' lite\\ s+tests' )})
257312}
258313
259314// ----------------
@@ -292,7 +347,7 @@ if (isXPlatCompatibleBranch) {
292347 CreateXPlatBuildTasks (osString, " linux" , " ubuntu" , branch, null , " " )
293348
294349 // Create a PR/continuous task to check ubuntu/static/debug/no-icu
295- [true , false ]. each { isPR ->
350+ [true , false ]. each { isPR ->
296351 CreateXPlatBuildTask (isPR, " debug" , true , osString, " linux" ,
297352 " ubuntu" , branch, null , " --no-icu" , " --not-tag exclude_noicu" , " " )
298353 }
0 commit comments