diff options
Diffstat (limited to 'netci.groovy')
-rwxr-xr-x | netci.groovy | 149 |
1 files changed, 26 insertions, 123 deletions
diff --git a/netci.groovy b/netci.groovy index 79d5368a9d..9df7e63a98 100755 --- a/netci.groovy +++ b/netci.groovy @@ -146,15 +146,11 @@ class Constants { def static architectureList = ['arm', 'arm64', 'x64', 'x86'] } -def static setMachineAffinity(def job, def os, def architecture, def options = null) { +def static setMachineAffinity(def job, def os, def architecture) { if (architecture == 'arm64' && os == 'Windows_NT') { Utilities.setMachineAffinity(job, os, 'latest-arm64'); - } else if (architecture == 'arm64' && os != 'Windows_NT' && options == null) { - Utilities.setMachineAffinity(job, os, 'arm64-small-page-size'); - } else if (architecture == 'arm64' && os != 'Windows_NT' && options['large_pages'] == true) { - Utilities.setMachineAffinity(job, os, 'arm64-huge-page-size'); - } else if (architecture == 'arm64' && os != 'Windows_NT' && options['is_build_only'] == true) { - Utilities.setMachineAffinity(job, os, 'arm64-cross-latest'); + } else if (architecture == 'arm64' && os == 'Ubuntu') { + Utilities.setMachineAffinity(job, os, 'arm-cross-latest'); } else if ((architecture == 'arm') && (os == 'Ubuntu' || os == 'Ubuntu16.04' || os == 'Tizen')) { Utilities.setMachineAffinity(job, 'Ubuntu', 'arm-cross-latest'); } else { @@ -343,14 +339,8 @@ def static getJobName(def configuration, def architecture, def os, def scenario, } break case 'arm64': - if (os.toLowerCase() == "windows_nt") { - // These are cross builds - baseName = architecture.toLowerCase() + '_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() - } - else { - // Defaults to a small page size set of machines. - baseName = architecture.toLowerCase() + '_' + configuration.toLowerCase() + '_' + "small_page_size" - } + // These are cross builds + baseName = architecture.toLowerCase() + '_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() break case 'arm': // These are cross builds @@ -392,7 +382,11 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def Utilities.addGithubPushTrigger(job) break case 'arm64': - Utilities.addGithubPushTrigger(job) + if (os == 'Windows_NT') { + Utilities.addGithubPushTrigger(job) + // TODO: Add once external email sending is available again + // addEmailPublisher(job, 'dotnetonarm64@microsoft.com') + } break default: println("Unknown architecture: ${architecture}"); @@ -593,9 +587,8 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def if (os != 'CentOS7.1' && !(os in bidailyCrossList)) { assert (os == 'Windows_NT') || (os in Constants.crossList) if (architecture == 'arm64') { - if (os == 'Windows_NT') { - Utilities.addPeriodicTrigger(job, '@daily') - } + assert (os == 'Windows_NT') + Utilities.addPeriodicTrigger(job, '@daily') // TODO: Add once external email sending is available again // addEmailPublisher(job, 'dotnetonarm64@microsoft.com') } @@ -615,6 +608,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def if (os != 'CentOS7.1' && os != 'OSX10.12' && !(os in bidailyCrossList)) { assert (os == 'Windows_NT') || (os in Constants.crossList) if (architecture == 'arm64') { + assert (os == 'Windows_NT') // TODO: Enable a periodic trigger after tests are updated. // Utilities.addPeriodicTrigger(job, '@daily') // TODO: Add once external email sending is available again @@ -1112,6 +1106,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, 'jashook', 'JosephTremoulet', 'pgavlin', + 'pkukol', 'russellhadley', 'RussKeldorph', 'sandreenko', @@ -1128,49 +1123,6 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, ] switch (os) { - case 'Ubuntu': - case 'Ubuntu16.04': - switch (scenario) { - case 'pri1': - if (configuration == 'Release') { - 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 - case 'gcstress15_pri1r2r': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstress1': - case 'r2r_jitstress2': - case 'r2r_jitstressregs1': - case 'r2r_jitstressregs2': - case 'r2r_jitstressregs3': - case 'r2r_jitstressregs4': - case 'r2r_jitstressregs8': - case 'r2r_jitstressregs0x10': - case 'r2r_jitstressregs0x80': - case 'r2r_jitstressregs0x1000': - case 'r2r_jitminopts': - case 'r2r_jitforcerelocs': - if (configuration == 'Release' || configuration == 'Checked') { - def displayStr = getR2RStressModeDisplayName(scenario) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ${displayStr} R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") - } - break - default: - break - } case 'Windows_NT': switch (scenario) { case 'default': @@ -1531,10 +1483,6 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR buildCommands += "build.cmd ${lowerConfiguration} ${arch} linuxmscorlib" buildCommands += "build.cmd ${lowerConfiguration} ${arch} freebsdmscorlib" buildCommands += "build.cmd ${lowerConfiguration} ${arch} osxmscorlib" - - if (arch == "x64") { - buildCommands += "build.cmd ${lowerConfiguration} arm64 linuxmscorlib" - } // Zip up the tests directory so that we don't use so much space/time copying // 10s of thousands of files around. @@ -1696,25 +1644,14 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR } break case 'arm64': - def standaloneGc = '' - if (scenario == 'standalone_gc') { - standaloneGc = 'buildstandalonegc' - } + // We don't run the cross build except on Ubuntu + assert os == 'Ubuntu' - if (!enableCorefxTesting) { - buildCommands += "ROOTFS_DIR=/opt/arm64-xenial-rootfs ./build.sh skipmscorlib verbose ${lowerConfiguration} ${architecture} cross clang3.8 skipnuget ${standaloneGc}" - - // HACK -- Arm64 does not have corefx jobs yet. - buildCommands += "git clone https://github.com/dotnet/corefx fx" - buildCommands += "ROOTFS_DIR=/opt/arm64-xenial-rootfs-corefx ./fx/build-native.sh -release -buildArch=arm64 -- verbose cross clang3.8" - buildCommands += "mkdir ./bin/Product/Linux.arm64.${configuration}/corefxNative" - buildCommands += "cp fx/bin/Linux.arm64.Release/native/* ./bin/Product/Linux.arm64.${configuration}/corefxNative" + buildCommands += """echo \"Using rootfs in /opt/aarch64-linux-gnu-root\" + ROOTFS_DIR=/opt/aarch64-linux-gnu-root ./build.sh skipmscorlib arm64 cross verbose ${lowerConfiguration}""" - // Set time out - setTestJobTimeOut(newJob, scenario) - // Basic archiving of the build - Utilities.addArchival(newJob, "bin/Product/**,bin/obj/*/tests/**/*.dylib,bin/obj/*/tests/**/*.so", "bin/Product/**/.nuget/**") - } + // Basic archiving of the build, no pal tests + Utilities.addArchival(newJob, "bin/Product/**", "bin/Product/**/.nuget/**") break case 'arm': // Cross builds for ARM runs on Ubuntu, Ubuntu16.04 and Tizen currently @@ -1807,12 +1744,8 @@ combinedScenarios.each { scenario -> // Skip totally unimplemented (in CI) configurations. switch (architecture) { case 'arm64': - if (os == 'Ubuntu16.04') { - os = 'Ubuntu' - } - - // Windows and Ubuntu only - if ((os != 'Windows_NT' && os != 'Ubuntu') || isBuildOnly) { + // Windows only + if (os != 'Windows_NT' || isBuildOnly) { return } break @@ -2042,8 +1975,7 @@ combinedScenarios.each { scenario -> // Create the new job def newJob = job(Utilities.getFullJobName(project, jobName, isPR, folderName)) {} - def machineAffinityOptions = architecture == 'arm64' ? ['is_build_only': true] : null - setMachineAffinity(newJob, os, architecture, machineAffinityOptions) + setMachineAffinity(newJob, os, architecture) // Add all the standard options Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}") @@ -2127,23 +2059,11 @@ combinedScenarios.each { scenario -> combinedScenarios.each { scenario -> [true, false].each { isPR -> // Architectures. x64 only at this point - ['x64', 'arm64'].each { architecture -> + ['x64'].each { architecture -> // Put the OS's supported for coreclr cross testing here Constants.crossList.each { os -> - if (architecture == 'arm64') { - if (os != "Ubuntu") { - return - } - } - Constants.configurationList.each { configuration -> - if (architecture == 'arm64') { - if (scenario != 'default' && scenario != 'pri1r2r' && scenario != 'gcstress0x3' && scenario != 'gcstress0xc') { - return - } - } - if (Constants.jitStressModeScenarios.containsKey(scenario)) { if (configuration != 'Checked') { return @@ -2289,18 +2209,13 @@ combinedScenarios.each { scenario -> testBuildScenario = 'default' } def inputWindowTestsBuildName = '' - def inputWindowsTestBuildArch = architecture - if (architecture == "arm64") { - // Use the x64 test build for arm64 unix - inputWindowsTestBuildArch = "x64" - } if (Constants.jitStressModeScenarios.containsKey(testBuildScenario)) { inputWindowTestsBuildName = projectFolder + '/' + - Utilities.getFullJobName(project, getJobName(configuration, inputWindowsTestBuildArch, 'windows_nt', 'default', true), isPR) + Utilities.getFullJobName(project, getJobName(configuration, architecture, 'windows_nt', 'default', true), isPR) } else { inputWindowTestsBuildName = projectFolder + '/' + - Utilities.getFullJobName(project, getJobName(configuration, inputWindowsTestBuildArch, 'windows_nt', testBuildScenario, true), isPR) + Utilities.getFullJobName(project, getJobName(configuration, architecture, 'windows_nt', testBuildScenario, true), isPR) } // Enable Server GC for Ubuntu PR builds def serverGCString = '' @@ -2542,13 +2457,6 @@ combinedScenarios.each { scenario -> // Unpack the corefx binaries shell("tar -xf ./bin/build.tar.gz -C ./bin/CoreFxBinDir") - // HACK -- Arm64 does not have corefx jobs yet. - // Clone corefx and build the native packages overwriting the x64 packages. - if (architecture == 'arm64') { - shell("cp ./bin/Product/Linux.arm64.${configuration}/corefxNative/* ./bin/CoreFxBinDir") - shell("chmod +x ./bin/Product/Linux.arm64.${configuration}/corerun") - } - // Unzip the tests first. Exit with 0 shell("unzip -q -o ./bin/tests/tests.zip -d ./bin/tests/Windows_NT.${architecture}.${configuration} || exit 0") @@ -2611,11 +2519,6 @@ combinedScenarios.each { scenario -> Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}") // Set timeouts to 240. setTestJobTimeOut(newJob, scenario) - - if (architecture == 'arm64') { - Utilities.setJobTimeout(newJob, 480) - } - Utilities.addXUnitDotNETResults(newJob, '**/coreclrtests.xml') // Create a build flow to join together the build and tests required to run this |