'ilrt',
'r2r',
'longgc',
- 'formatting',
'gcsimulator',
// 'jitdiff', // jitdiff is currently disabled, until someone spends the effort to make it fully work
'standalone_gc',
// Valid PR trigger combinations.
def static prTriggeredValidInnerLoopCombos = [
'Windows_NT': [
- 'x64': [
- 'Checked'
- ],
- 'x86': [
- 'Checked',
- 'Release'
- ],
'arm': [
- 'Debug',
'Checked'
],
'arm64': [
- 'Debug',
'Checked'
]
],
'Windows_NT_BuildOnly': [
- 'x64': [
- 'Checked',
- 'Release'
- ],
- 'x86': [
- 'Checked',
- 'Release'
- ],
'arm': [
'Checked'
],
- ],
- 'Ubuntu': [
- 'x64': [
- 'Checked'
- ],
- 'arm': [
- 'Checked'
- ]
- ],
- 'Ubuntu16.04': [
- 'arm64': [
- 'Checked'
- ]
- ],
- 'CentOS7.1': [
- 'x64': [
- 'Debug',
- 'Checked'
- ]
- ],
- 'OSX10.12': [
- 'x64': [
- 'Checked'
- ]
]
]
}
def static addGithubPushTriggerHelper(def job) {
- addToMergeView(job)
- Utilities.addGithubPushTrigger(job)
+ // Disable all Push trigger jobs. All jobs will need to be requested.
+ // addToMergeView(job)
+ // Utilities.addGithubPushTrigger(job)
}
}
else if (architecture == 'arm') {
if (os == 'Ubuntu') {
- return "microsoft/dotnet-buildtools-prereqs:ubuntu-14.04-cross-e435274-20180426002420"
+ return "mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-14.04-cross-e435274-20180426002420"
}
}
else if (architecture == 'arm64') {
if (os == 'Ubuntu16.04') {
- return "microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-arm64-a3ae44b-20180315221921"
+ return "mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-a3ae44b-20180315221921"
}
}
}
// Check scenario.
switch (scenario) {
case 'crossgen_comparison':
- if (isFlowJob && ((os == 'Ubuntu' && architecture == 'arm') || (os == 'Ubuntu16.04' && architecture == 'arm64')) && (configuration == 'Checked' || configuration == 'Release')) {
- addPeriodicTriggerHelper(job, '@daily')
+ if (isFlowJob && (configuration == 'Checked' || configuration == 'Release')) {
+ if (os == 'Ubuntu' && architecture == 'arm') {
+ // Not enough Linux/arm32 hardware for this.
+ // addPeriodicTriggerHelper(job, '@daily')
+ }
+ if (os == 'Ubuntu16.04' && architecture == 'arm64') {
+ addPeriodicTriggerHelper(job, '@daily')
+ }
}
break
if (isFlowJob) {
// Currently no push triggers, with limited arm Linux hardware.
// TODO: If we have enough machine capacity, add some arm Linux push triggers.
- addPeriodicTriggerHelper(job, '@daily')
+
+ // Duplicated by AzDO
+ // addPeriodicTriggerHelper(job, '@daily')
}
}
break
// arm r2r jobs should only run weekly.
else if (architecture == 'arm') {
if (isFlowJob) {
- addPeriodicTriggerHelper(job, '@weekly')
+ // Linux arm32 done in AzDO
+ if (os == 'Windows_NT') {
+ addPeriodicTriggerHelper(job, '@weekly')
+ }
}
}
// arm64 r2r jobs should only run weekly.
}
else if (architecture == 'arm') {
if (isFlowJob) {
- addPeriodicTriggerHelper(job, '@weekly')
+ // Linux arm32 duplicated by AzDO
+ if (os == 'Windows_NT') {
+ addPeriodicTriggerHelper(job, '@weekly')
+ }
}
}
else if (architecture == 'arm64') {
if (os in bidailyCrossList) {
break
}
+ if ((os == 'Ubuntu') && (architecture == 'arm') && !isCoreFxScenario(scenario)) {
+ // Linux arm32 duplicated by AzDO
+ break
+ }
// ARM corefx testing uses non-flow jobs to provide the configuration-specific
// build for the flow job. We don't need cron jobs for these. Note that the
// Windows ARM jobs depend on a Windows "build only" job that exits the trigger
// These jobs are very fast on Linux/arm64 hardware, so run them daily.
addPeriodicTriggerHelper(job, '@daily')
}
+ else if (scenario == 'corefx_baseline') {
+ addPeriodicTriggerHelper(job, '@daily')
+ }
else {
addPeriodicTriggerHelper(job, '@weekly')
}
if (os in bidailyCrossList) {
break
}
+ if ((os == 'Ubuntu') && (architecture == 'arm')) {
+ // Linux arm32 duplicated by AzDO
+ break
+ }
addPeriodicTriggerHelper(job, '@weekly')
break
case 'gcstress0xc':
if (os in bidailyCrossList) {
break
}
+ if ((os == 'Ubuntu') && (architecture == 'arm')) {
+ // Linux arm32 duplicated by AzDO
+ break
+ }
addPeriodicTriggerHelper(job, '@weekly')
break
if (needsTrigger) {
if (isArm64PrivateJob) {
- if (isDefaultTrigger) {
+ // ignore isDefaultTrigger to disable Jenkins by default
+ if (false) {
Utilities.addDefaultPrivateGithubPRTriggerForBranch(job, branch, contextString, null, arm64Users)
}
else {
}
}
else {
- if (isDefaultTrigger) {
+ // ignore isDefaultTrigger to disable Jenkins by default
+ if (false) {
Utilities.addGithubPRTriggerForBranch(job, branch, contextString)
}
else {
buildCommands += "tests\\runtest.cmd ${runtestArguments} CoreFXTestsAll"
// Archive and process (only) the test results
- Utilities.addArchival(newJob, "bin/Logs/**/testResults.xml")
+ Utilities.addArchival(newJob, "bin/Logs/**/testResults.xml", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
Utilities.addXUnitDotNETResults(newJob, "bin/Logs/**/testResults.xml")
}
else {
def workspaceRelativeFxRoot = "_/fx"
def absoluteFxRoot = "%WORKSPACE%\\_\\fx"
def fxBranch = getFxBranch(branch)
+ def exclusionRspPath = "%WORKSPACE%\\tests\\scripts\\run-corefx-tests-exclusions.txt"
- buildCommands += "python -u %WORKSPACE%\\tests\\scripts\\run-corefx-tests.py -arch ${arch} -ci_arch ${architecture} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${fxBranch} -env_script ${envScriptPath}"
+ buildCommands += "python -u %WORKSPACE%\\tests\\scripts\\run-corefx-tests.py -arch ${arch} -ci_arch ${architecture} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${fxBranch} -env_script ${envScriptPath} -exclusion_rsp_file ${exclusionRspPath}"
// Archive and process (only) the test results
- Utilities.addArchival(newJob, "${workspaceRelativeFxRoot}/artifacts/bin/**/testResults.xml")
+ Utilities.addArchival(newJob, "${workspaceRelativeFxRoot}/artifacts/bin/**/testResults.xml", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
Utilities.addXUnitDotNETResults(newJob, "${workspaceRelativeFxRoot}/artifacts/bin/**/testResults.xml")
//Archive additional build stuff to diagnose why my attempt at fault injection isn't causing CI to fail
buildCommands += "./build.sh ${lowerConfiguration} ${architecture} skiptests"
buildCommands += "./build-test.sh ${lowerConfiguration} ${architecture} generatetesthostonly"
buildCommands += "./tests/runtest.sh ${lowerConfiguration} --corefxtestsall --testHostDir=\${WORKSPACE}/bin/tests/${osGroup}.${architecture}.${configuration}/testhost/ --coreclr-src=\${WORKSPACE}"
-
- break
+
// Archive and process (only) the test results
- Utilities.addArchival(newJob, "bin/Logs/**/testResults.xml")
+ Utilities.addArchival(newJob, "bin/Logs/**/testResults.xml", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
Utilities.addXUnitDotNETResults(newJob, "bin/Logs/**/testResults.xml")
}
else {
def workspaceRelativeFxRoot = "_/fx"
def absoluteFxRoot = "\$WORKSPACE/${workspaceRelativeFxRoot}"
def fxBranch = getFxBranch(branch)
+ def exclusionRspPath = "\$WORKSPACE/tests/scripts/run-corefx-tests-exclusions.txt"
- buildCommands += "python -u \$WORKSPACE/tests/scripts/run-corefx-tests.py -arch ${architecture} -ci_arch ${architecture} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${fxBranch} -env_script ${scriptFileName}"
+ buildCommands += "python -u \$WORKSPACE/tests/scripts/run-corefx-tests.py -arch ${architecture} -ci_arch ${architecture} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${fxBranch} -env_script ${scriptFileName} -exclusion_rsp_file ${exclusionRspPath}"
// Archive and process (only) the test results
- Utilities.addArchival(newJob, "${workspaceRelativeFxRoot}/artifacts/bin/**/testResults.xml")
+ Utilities.addArchival(newJob, "${workspaceRelativeFxRoot}/artifacts/bin/**/testResults.xml", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
Utilities.addXUnitDotNETResults(newJob, "${workspaceRelativeFxRoot}/artifacts/bin/**/testResults.xml")
}
}
// TODO: Add -target_branch and -commit_hash arguments based on GitHub variables.
buildCommands += "python -u \${WORKSPACE}/tests/scripts/run-pmi-diffs.py -arch ${architecture} -ci_arch ${architecture} -build_type ${configuration} --skip_diffs"
- // ZIP what we created.
- buildCommands += "zip -r product.${os}.${architecture}.${lowerConfiguration}.zip ./bin/Product/Linux.${architecture}.${configuration}"
- buildCommands += "zip -r product.baseline.${os}.${architecture}.${lowerConfiguration}.zip ./_/pmi/base/bin/Product/Linux.${architecture}.${configuration}"
- buildCommands += "zip -r coreroot.${os}.${architecture}.${lowerConfiguration}.zip ./bin/tests/Linux.${architecture}.${configuration}/Tests/Core_Root"
- buildCommands += "zip -r coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.zip ./_/pmi/base/bin/tests/Linux.${architecture}.${configuration}/Tests/Core_Root"
+ // Archive what we created.
+ buildCommands += "tar -czf product.${os}.${architecture}.${lowerConfiguration}.tgz ./bin/Product/Linux.${architecture}.${configuration}"
+ buildCommands += "tar -czf product.baseline.${os}.${architecture}.${lowerConfiguration}.tgz ./_/pmi/base/bin/Product/Linux.${architecture}.${configuration}"
+ buildCommands += "tar -czf coreroot.${os}.${architecture}.${lowerConfiguration}.tgz ./bin/tests/Linux.${architecture}.${configuration}/Tests/Core_Root"
+ buildCommands += "tar -czf coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.tgz ./_/pmi/base/bin/tests/Linux.${architecture}.${configuration}/Tests/Core_Root"
// Archive the built artifacts
- Utilities.addArchival(newJob, "product.${os}.${architecture}.${lowerConfiguration}.zip,product.baseline.${os}.${architecture}.${lowerConfiguration}.zip,coreroot.${os}.${architecture}.${lowerConfiguration}.zip,coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.zip")
+ Utilities.addArchival(newJob, "product.${os}.${architecture}.${lowerConfiguration}.tgz,product.baseline.${os}.${architecture}.${lowerConfiguration}.tgz,coreroot.${os}.${architecture}.${lowerConfiguration}.tgz,coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.tgz")
}
else {
// Then, using the same docker image, build the tests and generate the CORE_ROOT layout.
// Returns true if the job should be generated.
def static shouldGenerateJob(def scenario, def isPR, def architecture, def configuration, def os, def isBuildOnly)
{
- // The various "innerloop" jobs are only available as PR triggered.
+ def windowsArmJob = ((os == "Windows_NT") && (architecture in Constants.armWindowsCrossArchitectureList))
+
+ // Innerloop jobs (except corefx_innerloop) are no longer created in Jenkins
+ // The only exception is windows arm(64)
+ if (isInnerloopTestScenario(scenario) && isPR && !windowsArmJob) {
+ assert scenario != 'corefx_innerloop'
+ return false;
+ }
if (!isPR) {
if (isInnerloopTestScenario(scenario)) {
def corefx_runtime_path = "%WORKSPACE%\\_\\fx\\artifacts\\bin\\testhost\\netcoreapp-Windows_NT-Release-${architecture}"
def corefx_tests_dir = "%WORKSPACE%\\_\\fx\\artifacts\\bin\\tests"
def corefx_exclusion_file = "%WORKSPACE%\\tests\\${architecture}\\corefx_test_exclusions.txt"
- batchFile("call %WORKSPACE%\\tests\\scripts\\run-corefx-tests.bat ${corefx_runtime_path} ${corefx_tests_dir} ${corefx_exclusion_file} ${architecture}")
+ def exclusionRspPath = "%WORKSPACE%\\tests\\scripts\\run-corefx-tests-exclusions.txt"
+ batchFile("call %WORKSPACE%\\tests\\scripts\\run-corefx-tests.bat ${corefx_runtime_path} ${corefx_tests_dir} ${corefx_exclusion_file} ${architecture} ${exclusionRspPath}")
} else { // !isCoreFxScenario(scenario)
if (isPmiAsmDiffsScenario) {
def workspaceRelativeRootLinux = "_/pmi"
shell("mkdir -p ${workspaceRelativeRootLinux}")
- shell("wget --progress=dot:giga ${inputUrlRoot}/product.${os}.${architecture}.${lowerConfiguration}.zip")
- shell("wget --progress=dot:giga ${inputUrlRoot}/product.baseline.${os}.${architecture}.${lowerConfiguration}.zip")
- shell("wget --progress=dot:giga ${inputUrlRoot}/coreroot.${os}.${architecture}.${lowerConfiguration}.zip")
- shell("wget --progress=dot:giga ${inputUrlRoot}/coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.zip")
+ shell("wget --progress=dot:giga ${inputUrlRoot}/product.${os}.${architecture}.${lowerConfiguration}.tgz")
+ shell("wget --progress=dot:giga ${inputUrlRoot}/product.baseline.${os}.${architecture}.${lowerConfiguration}.tgz")
+ shell("wget --progress=dot:giga ${inputUrlRoot}/coreroot.${os}.${architecture}.${lowerConfiguration}.tgz")
+ shell("wget --progress=dot:giga ${inputUrlRoot}/coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.tgz")
}
else if (doCoreFxTesting) {
shell("mkdir -p ${workspaceRelativeFxRootLinux}")
}
if (isPmiAsmDiffsScenario) {
- // TODO: add back "-q" when we know it works
- shell("unzip -o ./product.${os}.${architecture}.${lowerConfiguration}.zip || exit 0")
- shell("unzip -o ./product.baseline.${os}.${architecture}.${lowerConfiguration}.zip || exit 0")
- shell("unzip -o ./coreroot.${os}.${architecture}.${lowerConfiguration}.zip || exit 0")
- shell("unzip -o ./coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.zip || exit 0")
+ shell("tar -xzf ./product.${os}.${architecture}.${lowerConfiguration}.tgz || exit 0")
+ shell("tar -xzf ./product.baseline.${os}.${architecture}.${lowerConfiguration}.tgz || exit 0")
+ shell("tar -xzf ./coreroot.${os}.${architecture}.${lowerConfiguration}.tgz || exit 0")
+ shell("tar -xzf ./coreroot.baseline.${os}.${architecture}.${lowerConfiguration}.tgz || exit 0")
}
// CoreFX testing downloads the CoreFX tests, not the coreclr tests. Also, unzip the built CoreFX layout/runtime directories.
else if (doCoreFxTesting) {
shell("""\
python -u \${WORKSPACE}/tests/scripts/run-pmi-diffs.py -arch ${architecture} -ci_arch ${architecture} -build_type ${configuration} --skip_baseline_build""")
- shell("zip -r dasm.${os}.${architecture}.${configuration}.zip ./_/pmi/asm")
+ shell("tar -czf dasm.${os}.${architecture}.${configuration}.tgz ./_/pmi/asm")
}
else if (doCoreFxTesting) {
+ def exclusionRspPath = "\${WORKSPACE}/tests/scripts/run-corefx-tests-exclusions.txt"
shell("""\
-\${WORKSPACE}/tests/scripts/run-corefx-tests.sh --test-exclude-file \${WORKSPACE}/tests/${architecture}/corefx_linux_test_exclusions.txt --runtime \${WORKSPACE}/${workspaceRelativeFxRootLinux}/artifacts/bin/testhost/netcoreapp-Linux-Release-${architecture} --arch ${architecture} --corefx-tests \${WORKSPACE}/${workspaceRelativeFxRootLinux}/artifacts/bin --configurationGroup Release""")
+\${WORKSPACE}/tests/scripts/run-corefx-tests.sh --test-exclude-file \${WORKSPACE}/tests/${architecture}/corefx_linux_test_exclusions.txt --runtime \${WORKSPACE}/${workspaceRelativeFxRootLinux}/artifacts/bin/testhost/netcoreapp-Linux-Release-${architecture} --arch ${architecture} --corefx-tests \${WORKSPACE}/${workspaceRelativeFxRootLinux}/artifacts/bin --configurationGroup Release --exclusion-rsp-file ${exclusionRspPath}""")
}
else {
def runScript = "${dockerCmd}./tests/runtest.sh"
if (isPmiAsmDiffsScenario) {
// Archive the asm
- Utilities.addArchival(newJob, "dasm.${os}.${architecture}.${configuration}.zip")
+ Utilities.addArchival(newJob, "dasm.${os}.${architecture}.${configuration}.tgz")
}
else if (doCoreFxTesting) {
- Utilities.addArchival(newJob, "${workspaceRelativeFxRootLinux}/artifacts/bin/**/testResults.xml")
+ Utilities.addArchival(newJob, "${workspaceRelativeFxRootLinux}/artifacts/bin/**/testResults.xml", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
if ((os == "Ubuntu") && (architecture == 'arm')) {
// We have a problem with the xunit plug-in, where it is consistently failing on Ubuntu arm32 test result uploading with this error:
//
} // steps
} // job
- Utilities.addArchival(newJob, "${workspaceRelativeNativeArchResultDir}/**")
- Utilities.addArchival(newJob, "${workspaceRelativeCrossArchResultDir}/**")
+ Utilities.addArchival(newJob, "${workspaceRelativeNativeArchResultDir}/**", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
+ Utilities.addArchival(newJob, "${workspaceRelativeCrossArchResultDir}/**", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
return newJob
}
}
}
+ // Disable flow jobs for innerloop pr.
+ //
+ // The only exception is windows arm(64)
+ if (isInnerloopTestScenario(scenario) && isPR && os != 'Windows_NT') {
+ assert scenario != 'corefx_innerloop'
+
+ return false;
+ }
+
// Filter based on OS and architecture.
switch (architecture) {