Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'netci.groovy')
-rw-r--r--netci.groovy234
1 files changed, 161 insertions, 73 deletions
diff --git a/netci.groovy b/netci.groovy
index d98779822..5877dd7c0 100644
--- a/netci.groovy
+++ b/netci.groovy
@@ -8,96 +8,184 @@ def project = GithubProject
// The input branch name (e.g. master)
def branch = GithubBranchName
-def imageVersionMap = ['Windows_NT':'latest-or-auto',
- 'OSX10.12':'latest-or-auto',
- 'Ubuntu':'20170118']
-
-// Innerloop build OS's
-def osList = ['Ubuntu', 'OSX10.12', 'Windows_NT']
+class Constants {
+
+ def static imageVersionMap = ['Windows_NT':'latest-or-auto',
+ 'OSX10.12':'latest-or-auto',
+ 'Ubuntu':'20170118']
+
+ def static scenarios = ['coreclr', 'corefx']
+
+ // Innerloop build OS's
+ def static osList = ['Ubuntu', 'OSX10.12', 'Windows_NT', 'Windows_NT_Wasm']
+
+}
// Generate the builds for debug and release, commit and PRJob
-[true, false].each { isPR -> // Defines a closure over true and false, value assigned to isPR
- ['Debug', 'Release'].each { configuration ->
- osList.each { os ->
+Constants.scenarios.each { scenario ->
+ [true, false].each { isPR -> // Defines a closure over true and false, value assigned to isPR
+ ['Debug', 'Release'].each { configuration ->
+ Constants.osList.each { os ->
- // Define build string
- def lowercaseConfiguration = configuration.toLowerCase()
-
- // Determine the name for the new job. The first parameter is the project,
- // the second parameter is the base name for the job, and the last parameter
- // is a boolean indicating whether the job will be a PR job. If true, the
- // suffix _prtest will be appended.
- def newJobName = Utilities.getFullJobName(project, lowercaseConfiguration + '_' + os.toLowerCase(), isPR)
- def buildString = "";
- def prJobDescription = "${os} ${configuration}";
- if (configuration == 'Debug') {
- prJobDescription += " and CoreCLR tests"
- }
-
- // Calculate the build commands
- if (os == 'Windows_NT') {
- buildString = "build.cmd ${lowercaseConfiguration}"
- testScriptString = "tests\\runtest.cmd ${configuration} /coreclr "
- }
- else {
- buildString = "./build.sh ${lowercaseConfiguration}"
- testScriptString = "tests/runtest.sh ${configuration} -coredumps -coreclr "
- }
+ if (configuration == 'Release' && scenario == 'corefx') {
+ return
+ }
- // Create a new job with the specified name. The brace opens a new closure
- // and calls made within that closure apply to the newly created job.
- def newJob = job(newJobName) {
- // This opens the set of build steps that will be run.
- steps {
- if (os == 'Windows_NT') {
- // Indicates that a batch script should be run with the build string (see above)
- batchFile(buildString)
- batchFile("tests\\runtest.cmd ${configuration} /multimodule")
-
- if (configuration == 'Debug') {
- if (isPR) {
- // Run a small set of BVTs during PR validation
- batchFile(testScriptString + "Top200")
- }
- else {
- // Run the full set of known passing tests in the post-commit job
- batchFile(testScriptString + "KnownGood /multimodule")
- }
- }
+ // Disable the corefx scenario for wasm for now since
+ // the tests won't work
+ if (os == 'Windows_NT_Wasm' && scenario == 'corefx') {
+ return
+ }
+
+ // Define build string
+ def lowercaseConfiguration = configuration.toLowerCase()
+
+ // Determine the name for the new job. The first parameter is the project,
+ // the second parameter is the base name for the job, and the last parameter
+ // is a boolean indicating whether the job will be a PR job. If true, the
+ // suffix _prtest will be appended.
+ def baseJobName = lowercaseConfiguration + '_' + os.toLowerCase()
+ if (scenario != 'coreclr') {
+ baseJobName += '_' + scenario
+ }
+ def newJobName = Utilities.getFullJobName(project, baseJobName, isPR)
+ def buildString = "";
+ def prJobDescription = "${os} ${configuration}";
+ if (configuration == 'Debug') {
+ if (scenario == 'coreclr') {
+ prJobDescription += " and CoreCLR tests"
}
- else {
- shell(buildString)
+ if (scenario == 'corefx') {
+ prJobDescription += " and CoreFX tests"
+ }
+ }
+
+ def buildCommands = calculateBuildCommands(os, configuration, scenario, isPR)
- if (configuration == 'Debug') {
- if (isPR) {
- // Run a small set of BVTs during PR validation
- shell(testScriptString + "top200")
+ // Create a new job with the specified name. The brace opens a new closure
+ // and calls made within that closure apply to the newly created job.
+ def newJob = job(newJobName) {
+ // This opens the set of build steps that will be run.
+ steps {
+ if (os.startsWith('Windows_NT')) {
+ // Indicates that a batch script should be run with each build command
+ buildCommands.each { buildCommand ->
+ batchFile(buildCommand)
}
- else {
- // Run the full set of known passing tests in the post-commit job
-
- // Todo: Enable push test jobs once we establish a reasonable passing set of tests
- // shell(testScriptString + "KnownGood")
+ }
+ else {
+ buildCommands.each { buildCommand ->
+ shell(buildCommand)
}
}
}
}
+
+ // This call performs test run checks for the CI.
+ Utilities.addXUnitDotNETResults(newJob, '**/testResults.xml')
+ Utilities.addArchival(newJob, "**/testResults.xml")
+ if (os == 'Windows_NT_Wasm') {
+ Utilities.setMachineAffinity(newJob, 'Windows.10.Wasm.Open')
+ prJobDescription += " WebAssembly"
+ }
+ else {
+ Utilities.setMachineAffinity(newJob, os, Constants.imageVersionMap[os])
+ }
+ Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}")
+
+ if (isPR) {
+ Utilities.addGithubPRTriggerForBranch(newJob, branch, prJobDescription)
+ }
+ else {
+ // Set a large timeout since the default (2 hours) is insufficient
+ Utilities.setJobTimeout(newJob, 1440)
+ Utilities.addGithubPushTrigger(newJob)
+ }
}
+ }
+ }
+}
- // This call performs test run checks for the CI.
- Utilities.addXUnitDotNETResults(newJob, '**/testResults.xml')
- Utilities.setMachineAffinity(newJob, os, imageVersionMap[os])
- Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}")
- if (isPR) {
- Utilities.addGithubPRTriggerForBranch(newJob, branch, prJobDescription)
+def static calculateBuildCommands(def os, def configuration, def scenario, def isPR) {
+
+ def buildCommands = []
+ def lowercaseConfiguration = configuration.toLowerCase()
+ def testScriptString= ''
+
+ if (os == 'Windows_NT') {
+ // Calculate the build commands
+ buildCommands += "build.cmd ${lowercaseConfiguration} skiptests"
+
+ if (scenario == 'coreclr'){
+ // Run simple tests and multimodule tests only under CoreCLR mode
+ buildCommands += "tests\\runtest.cmd ${configuration} "
+ buildCommands += "tests\\runtest.cmd ${configuration} /multimodule"
+ if (configuration == 'Debug')
+ {
+ // Run CoreCLR tests
+ testScriptString = "tests\\runtest.cmd ${configuration} /coreclr "
+ if (isPR) {
+ // Run a small set of BVTs during PR validation
+ buildCommands += testScriptString + "Top200"
+ }
+ else {
+ // Run the full set of known passing tests in the post-commit job
+ buildCommands += testScriptString + "KnownGood /multimodule"
+ }
}
- else {
- // Set a large timeout since the default (2 hours) is insufficient
- Utilities.setJobTimeout(newJob, 1440)
- Utilities.addGithubPushTrigger(newJob)
+ }
+ else if (scenario == 'corefx')
+ {
+ // CoreFX tests are currently run only under Debug, so skip the configuration check
+ testScriptString = "tests\\runtest.cmd ${configuration} /corefx "
+
+ //Todo: Add json config files for different testing scenarios
+ buildCommands += testScriptString
+ }
+ }
+ else if (os == 'Windows_NT_Wasm') {
+ // Emsdk isn't necessarily activated correctly on CI machines (but should be on the path), so activate it now
+ buildCommands += "emsdk activate latest"
+
+ buildCommands += "build.cmd wasm ${lowercaseConfiguration} skiptests"
+ buildCommands += "tests\\runtest.cmd wasm ${configuration}"
+ }
+ else {
+ // Calculate the build commands
+ buildCommands += "./build.sh ${lowercaseConfiguration} skiptests"
+
+ // Calculate the test commands
+ if (scenario == 'coreclr' )
+ {
+ // Run simple tests and multimodule tests only under CoreCLR mode
+ buildCommands += "tests/runtest.sh ${configuration} "
+
+ if (configuration == 'Debug')
+ {
+ testScriptString = "tests/runtest.sh ${configuration} -coredumps -coreclr "
+ if (isPR) {
+ // Run a small set of BVTs during PR validation
+ buildCommands += testScriptString + "top200"
+ }
+ else {
+ // Run the full set of known passing tests in the post-commit job
+
+ // Todo: Enable push test jobs once we establish a reasonable passing set of tests
+ // shell(testScriptString + "KnownGood")
+ }
}
}
+ else if (scenario == 'corefx')
+ {
+ // CoreFX tests are currently run only under Debug, so skip the configuration check
+ testScriptString = "tests/runtest.sh ${configuration} -corefx "
+
+ //Todo: Add json config files for different testing scenarios
+ buildCommands += testScriptString
+ }
}
+
+ return buildCommands
}
JobReport.Report.generateJobReport(out)