From 9d0b8fcfb9bca25a054ee5e2e64a3f5accf6d6b5 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 11 May 2023 13:02:21 +0200 Subject: [PATCH 01/72] Run iOS runtime tests only --- eng/pipelines/runtime-linker-tests.yml | 132 +- eng/pipelines/runtime-staging.yml | 82 +- eng/pipelines/runtime.yml | 2755 ++++++++++++------------ 3 files changed, 1504 insertions(+), 1465 deletions(-) diff --git a/eng/pipelines/runtime-linker-tests.yml b/eng/pipelines/runtime-linker-tests.yml index dc586a230fd934..1f825fd151128f 100644 --- a/eng/pipelines/runtime-linker-tests.yml +++ b/eng/pipelines/runtime-linker-tests.yml @@ -61,71 +61,71 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build and Test ILLink in Release config vertical for Windows, Linux and OSX - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - windows_x64 - - osx_x64 - - linux_x64 - jobParameters: - testGroup: innerloop - testResultsFormat: 'vstest' - timeoutInMinutes: 120 - nameSuffix: ILLink_Runtime_Testing - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - eq(variables['isRollingBuild'], true)) - buildArgs: -s tools.illinktests -test -c $(_BuildConfig) + # # + # # Build and Test ILLink in Release config vertical for Windows, Linux and OSX + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - windows_x64 + # - osx_x64 + # - linux_x64 + # jobParameters: + # testGroup: innerloop + # testResultsFormat: 'vstest' + # timeoutInMinutes: 120 + # nameSuffix: ILLink_Runtime_Testing + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # buildArgs: -s tools.illinktests -test -c $(_BuildConfig) - # - # Build Release config vertical for Windows, Linux, and OSX - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - windows_x64 - - osx_x64 - - linux_x64 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: Runtime_Release - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - buildArgs: -s clr+libs -c $(_BuildConfig) - extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml + # # + # # Build Release config vertical for Windows, Linux, and OSX + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - windows_x64 + # - osx_x64 + # - linux_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: Runtime_Release + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # buildArgs: -s clr+libs -c $(_BuildConfig) + # extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml - # - # Build Release config vertical for Browser-wasm - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - browser_wasm - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: Runtime_Release - buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false - condition: - or( - eq(variables['isRollingBuild'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true)) - extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml - extraStepsParameters: - extraTestArgs: '/p:WasmBuildNative=false' + # # + # # Build Release config vertical for Browser-wasm + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - browser_wasm + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: Runtime_Release + # buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false + # condition: + # or( + # eq(variables['isRollingBuild'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true)) + # extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml + # extraStepsParameters: + # extraTestArgs: '/p:WasmBuildNative=false' diff --git a/eng/pipelines/runtime-staging.yml b/eng/pipelines/runtime-staging.yml index 322faae117b71d..3c1ec70634c11f 100644 --- a/eng/pipelines/runtime-staging.yml +++ b/eng/pipelines/runtime-staging.yml @@ -62,44 +62,44 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build the whole product using Mono and run runtime tests with the JIT. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - iossimulator_x64 - variables: - - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: pr/dotnet/runtime/$(Build.SourceBranch) - - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: ci/dotnet/runtime/$(Build.SourceBranch) - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_RuntimeTests - runtimeVariant: minijit - buildArgs: -s mono+libs -c $(_BuildConfig) - timeoutInMinutes: 240 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - ${{ if eq(variables['isRollingBuild'], true) }}: - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # # + # # Build the whole product using Mono and run runtime tests with the JIT. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iossimulator_x64 + # variables: + # - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + # - name: _HelixSource + # value: pr/dotnet/runtime/$(Build.SourceBranch) + # - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + # - name: _HelixSource + # value: ci/dotnet/runtime/$(Build.SourceBranch) + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_RuntimeTests + # runtimeVariant: minijit + # buildArgs: -s mono+libs -c $(_BuildConfig) + # timeoutInMinutes: 240 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # ${{ if eq(variables['isRollingBuild'], true) }}: + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 025997aadde2c2..a785f122fa6ed5 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -65,1383 +65,1422 @@ extends: # Build CoreCLR checked # Only when CoreCLR is changed # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) - - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;" /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) + + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;" /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # testGroup: clrTools + # timeoutInMinutes: 120 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:MonoWasmBuildVariant=perftrace + # alwaysRun: ${{ variables.isRollingBuild }} + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # MacCatalyst interp - requires AOT Compilation and Interp flags + # # Build the whole product using Mono and run libraries tests + # # + # # + # # Disabled pending queue backup investigation + # # + # #- template: /eng/pipelines/common/platform-matrix.yml + # # parameters: + # # jobTemplate: /eng/pipelines/common/global-build-job.yml + # # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # # buildConfig: Release + # # runtimeFlavor: mono + # # platforms: + # # - maccatalyst_x64 + # # - ${{ if eq(variables['isRollingBuild'], true) }}: + # # - maccatalyst_arm64 + # # variables: + # # # map dependencies variables to local variables + # # - name: librariesContainsChange + # # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # # - name: monoContainsChange + # # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # # jobParameters: + # # testGroup: innerloop + # # nameSuffix: AllSubsets_Mono + # # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + # # timeoutInMinutes: 180 + # # condition: >- + # # or( + # # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # # eq(variables['isRollingBuild'], true)) + # # # extra steps, run tests + # # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # # extraStepsParameters: + # # creator: dotnet-bot + # # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # # condition: >- + # # or( + # # eq(variables['librariesContainsChange'], true), + # # eq(variables['monoContainsChange'], true), + # # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono and Installer on LLVMJIT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - linux_x64 + # - linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono and Installer on LLVMAOT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_x64 + # - linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono debug + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: debug + # platforms: + # - osx_x64 + # - osx_arm64 + # - linux_x64 + # - linux_arm64 + # # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release AOT cross-compilers + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_x64 + # # - linux_arm64 + # # - linux_musl_arm64 + # - windows_x64 + # # - windows_x86 + # # - windows_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - osx_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # - tvos + # - ios + # - maccatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_browser_offsets + # monoCrossAOTTargetOS: + # - browser + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_x64 + # # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries, mono, or the runtime tests changed + # # Currently only these architectures are needed for the runtime tests. + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - osx_x64 + # - linux_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release with LLVM AOT + # # Only when mono, or the runtime tests changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_x64 + # - linux_arm64 + # jobParameters: + # runtimeVariant: llvmaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build libraries using live CoreLib + # # These set of libraries are built always no matter what changed + # # The reason for that is because Corelib and Installer needs it and + # # These are part of the test matrix for Libraries changes. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - linux_arm + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_arm64 + # - windows_x86 + # jobParameters: + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - linux_arm64 + # - linux_musl_x64 + # - linux_x64 + # - osx_arm64 + # - osx_x64 + # - windows_x64 + # - freebsd_x64 + # jobParameters: + # testScope: innerloop + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries debug build that only runs when coreclr is changed + # # Only do this on PR builds since we use the Release builds for these test runs in CI + # # and those are already built above + # # + # - ${{ if eq(variables['isRollingBuild'], false) }}: + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Debug + # platforms: + # - windows_x86 + # jobParameters: + # condition: >- + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # # + # # Libraries release build that only runs when coreclr is changed in PRs + # # We need these for checked coreclr + release libraries tests runs. + # # + # - ${{ if eq(variables['isRollingBuild'], false) }}: + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # framework: net48 + # runTests: true + # testScope: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # jobParameters: + # framework: allConfigurations + # runTests: true + # useHelix: false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Installer Build and Test + # # These are always built since they only take like 15 minutes + # # we expect these to be done before we finish libraries or coreclr testing. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x86 + # - windows_arm64 + # - linux_arm + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: Release + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: Release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm64 + # - linux_musl_x64 + # - windows_x64 + # - freebsd_x64 + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # CoreCLR Test builds using live libraries release build + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: checked + # platforms: + # - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # CoreCLR Test executions using live libraries + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - linux_arm + # - windows_x86 + # - windows_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: Release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # - linux_x64 + # - linux_arm64 + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - osx_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: minijit + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build the whole product using Mono and run runtime tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # - linux_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests + # runtimeVariant: minijit + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # # + # # Mono CoreCLR runtime Test executions using live libraries in interpreter mode + # # Only when Mono is changed + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests + # runtimeVariant: monointerpreter + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # # + # # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT + # # Only when Mono is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_x64 + # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + # #- linux_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests + # runtimeVariant: llvmaot + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + # timeoutInMinutes: 180 + + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # llvmAotStepContainer: linux_x64_llvmaot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # # + # # Libraries Release Test Execution against a release mono runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # runtimeDisplayName: mono + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release mono interpreter runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # #- osx_x64 + # - linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # interpreter: true + # runtimeDisplayName: mono_interpreter + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Debug Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # - osx_x64 + # - linux_x64 + # - linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # The next three jobs run checked coreclr + libraries tests. + # # The matrix looks like the following, where the right columns specify which configurations + # # the libraries tests are built in. + # # ________________________________________ + # # | Platform | PR | Rolling | + # # | ---------------- | ------- | ------- | + # # | linux-arm64 | Debug | Release | + # # | windows-x86 | Debug | Release | + # # | linux-musl-x64 | Debug | Release | + # # | OSX-x64 | Debug | Release | + # # | linux-musl-arm | Release | Release | + # # | linux-musl-arm64 | Release | Release | + # # | linux-x64 | Release | Release | + # # | windows-x64 | Release | Release | + + # # + # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # # Only when the PR contains a coreclr change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - linux_arm64 + # - windows_x86 + # - linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Release Libraries Test Execution against a checked runtime + # # Only if CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_x64 + # - windows_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - osx_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Sourcebuild legs + # # We have 3 important legs for source-build: + # # - Centos.7 (ensures that RH keeps working) + # # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # # + # # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, + # # Run Linux-x64 in PR. + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_centos7_x64 + # jobParameters: + # nameSuffix: centos7SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_banana24_x64 + # jobParameters: + # nameSuffix: banana24SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/global-build-job.yml helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - testGroup: clrTools - timeoutInMinutes: 120 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:MonoWasmBuildVariant=perftrace - alwaysRun: ${{ variables.isRollingBuild }} - - # WASI/WASM - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release runtimeFlavor: mono + isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} + isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }} platforms: - ios_arm64 - tvos_arm64 variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # MacCatalyst interp - requires AOT Compilation and Interp flags - # Build the whole product using Mono and run libraries tests - # - # - # Disabled pending queue backup investigation - # - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - maccatalyst_x64 - # - ${{ if eq(variables['isRollingBuild'], true) }}: - # - maccatalyst_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - # Build Mono and Installer on LLVMJIT mode - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMJIT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - linux_x64 - - linux_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMJIT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono and Installer on LLVMAOT mode - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_x64 - - linux_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAOT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAOT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono debug - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: debug - platforms: - - osx_x64 - - osx_arm64 - - linux_x64 - - linux_arm64 - # - linux_musl_arm64 - - windows_x64 - - windows_x86 - # - windows_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release AOT cross-compilers - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_x64 - # - linux_arm64 - # - linux_musl_arm64 - - windows_x64 - # - windows_x86 - # - windows_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - monoCrossAOTTargetOS: - - android - - browser - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - osx_x64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets - monoCrossAOTTargetOS: - - android - - browser - - tvos - - ios - - maccatalyst - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_arm64 - - osx_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_browser_offsets - monoCrossAOTTargetOS: - - browser - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_x64 - # - linux_musl_arm64 - - windows_x64 - - windows_x86 - # - windows_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release - # Only when libraries, mono, or the runtime tests changed - # Currently only these architectures are needed for the runtime tests. - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - osx_x64 - - linux_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release with LLVM AOT - # Only when mono, or the runtime tests changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_x64 - - linux_arm64 - jobParameters: - runtimeVariant: llvmaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build libraries using live CoreLib - # These set of libraries are built always no matter what changed - # The reason for that is because Corelib and Installer needs it and - # These are part of the test matrix for Libraries changes. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - linux_arm - - linux_musl_arm - - linux_musl_arm64 - - windows_arm64 - - windows_x86 - jobParameters: - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - linux_arm64 - - linux_musl_x64 - - linux_x64 - - osx_arm64 - - osx_x64 - - windows_x64 - - freebsd_x64 - jobParameters: - testScope: innerloop - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries debug build that only runs when coreclr is changed - # Only do this on PR builds since we use the Release builds for these test runs in CI - # and those are already built above - # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Debug - platforms: - - windows_x86 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - - # - # Libraries release build that only runs when coreclr is changed in PRs - # We need these for checked coreclr + release libraries tests runs. - # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - windows_x86 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - framework: net48 - runTests: true - testScope: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - windows_x64 - jobParameters: - framework: allConfigurations - runTests: true - useHelix: false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Installer Build and Test - # These are always built since they only take like 15 minutes - # we expect these to be done before we finish libraries or coreclr testing. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - linux_musl_arm - - linux_musl_arm64 - - windows_x86 - - windows_arm64 - - linux_arm - jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: Release - runOnlyIfDependenciesSucceeded: true - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: Release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm64 - - linux_musl_x64 - - windows_x64 - - freebsd_x64 - jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runOnlyIfDependenciesSucceeded: true - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # CoreCLR Test builds using live libraries release build - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: checked - platforms: - - CoreClrTestBuildHost # Either osx_x64 or linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # CoreCLR Test executions using live libraries - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - linux_arm - - windows_x86 - - windows_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: Release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - osx_x64 - - linux_x64 - - linux_arm64 - - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - osx_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Mono Test builds with CoreCLR runtime tests using live libraries debug build - # Only when Mono is changed - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - CoreClrTestBuildHost # Either osx_x64 or linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - liveRuntimeBuildConfig: release - runtimeVariant: minijit - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build the whole product using Mono and run runtime tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - osx_x64 - - linux_arm64 - variables: + - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: pr/dotnet/runtime/$(Build.SourceBranch) + - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: ci/dotnet/runtime/$(Build.SourceBranch) - name: timeoutPerTestInMinutes value: 60 - name: timeoutPerTestCollectionInMinutes value: 180 jobParameters: testGroup: innerloop - nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests - runtimeVariant: minijit - buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # Mono CoreCLR runtime Test executions using live libraries in interpreter mode - # Only when Mono is changed - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - osx_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests - runtimeVariant: monointerpreter - buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release + nameSuffix: AllSubsets_Mono_RuntimeTests + buildArgs: -s mono+libs -c $(_BuildConfig) + timeoutInMinutes: 240 + # extra steps, run tests extraVariablesTemplates: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # - # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT - # Only when Mono is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_x64 - # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation - #- linux_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests - runtimeVariant: llvmaot - buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true - timeoutInMinutes: 180 - - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + parameters: + testGroup: innerloop extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml extraStepsParameters: creator: dotnet-bot - llvmAotStepContainer: linux_x64_llvmaot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # Libraries Release Test Execution against a release mono runtime. - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - runtimeFlavor: mono - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - windows_x64 - - osx_x64 - - linux_arm64 - - linux_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - runtimeDisplayName: mono - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release mono interpreter runtime. - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - runtimeFlavor: mono - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - windows_x64 - #- osx_x64 - - linux_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - interpreter: true - runtimeDisplayName: mono_interpreter - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release coreclr runtime - # Only when the PR contains a libraries change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - windows_x86 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Debug Test Execution against a release coreclr runtime - # Only when the PR contains a libraries change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - windows_x64 - - osx_x64 - - linux_x64 - - linux_musl_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # The next three jobs run checked coreclr + libraries tests. - # The matrix looks like the following, where the right columns specify which configurations - # the libraries tests are built in. - # ________________________________________ - # | Platform | PR | Rolling | - # | ---------------- | ------- | ------- | - # | linux-arm64 | Debug | Release | - # | windows-x86 | Debug | Release | - # | linux-musl-x64 | Debug | Release | - # | OSX-x64 | Debug | Release | - # | linux-musl-arm | Release | Release | - # | linux-musl-arm64 | Release | Release | - # | linux-x64 | Release | Release | - # | windows-x64 | Release | Release | - - # - # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime - # Only when the PR contains a coreclr change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - linux_arm64 - - windows_x86 - - linux_musl_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Release Libraries Test Execution against a checked runtime - # Only if CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - linux_musl_arm - - linux_musl_arm64 - - linux_x64 - - windows_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - osx_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Sourcebuild legs - # We have 3 important legs for source-build: - # - Centos.7 (ensures that RH keeps working) - # - Linux-x64 portable (used for dependency flow and downstream PR verification) - # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. - # - # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, - # Run Linux-x64 in PR. - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - helixQueueGroup: pr - platforms: - - SourceBuild_centos7_x64 - jobParameters: - nameSuffix: centos7SourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: eq(variables['isRollingBuild'], true) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - helixQueueGroup: pr - platforms: - - SourceBuild_banana24_x64 - jobParameters: - nameSuffix: banana24SourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: eq(variables['isRollingBuild'], true) + # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 + testBuildArgs: tree tracing/eventpipe + testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file From 5535ca09dc4422551c922951960bd5ae8fae2788 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 11 May 2023 13:11:15 +0200 Subject: [PATCH 02/72] Run iOS runtime tests only --- eng/pipelines/global-build.yml | 262 ++++++++++++++++----------------- eng/pipelines/runtime.yml | 52 ++++--- 2 files changed, 156 insertions(+), 158 deletions(-) diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml index 6f80e6ad104525..831b7e0871b7c5 100644 --- a/eng/pipelines/global-build.yml +++ b/eng/pipelines/global-build.yml @@ -40,140 +40,140 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build with Release config and Debug runtimeConfiguration - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - windows_x86 - - osx_x64 - - osx_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: Runtime_Debug - buildArgs: -c release -runtimeConfiguration debug - timeoutInMinutes: 120 - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build with Release config and Debug runtimeConfiguration + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - windows_x86 + # - osx_x64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Runtime_Debug + # buildArgs: -c release -runtimeConfiguration debug + # timeoutInMinutes: 120 + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build with Release config and runtimeConfiguration with MSBuild generator - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - windows_x86 - jobParameters: - testGroup: innerloop - nameSuffix: MSBuild_CMake - buildArgs: -c Release -msbuild - timeoutInMinutes: 120 - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build with Release config and runtimeConfiguration with MSBuild generator + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - windows_x86 + # jobParameters: + # testGroup: innerloop + # nameSuffix: MSBuild_CMake + # buildArgs: -c Release -msbuild + # timeoutInMinutes: 120 + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build with Debug config and Release runtimeConfiguration - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: debug - platforms: - - linux_x64_dev_innerloop - jobParameters: - testGroup: innerloop - nameSuffix: Runtime_Release - buildArgs: -c debug -runtimeConfiguration release - timeoutInMinutes: 120 - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build with Debug config and Release runtimeConfiguration + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: debug + # platforms: + # - linux_x64_dev_innerloop + # jobParameters: + # testGroup: innerloop + # nameSuffix: Runtime_Release + # buildArgs: -c debug -runtimeConfiguration release + # timeoutInMinutes: 120 + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build with RuntimeFlavor only. This exercise code paths where only RuntimeFlavor is - # specified. Catches cases where we depend on Configuration also being specified - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: debug - platforms: - - linux_x64_dev_innerloop - jobParameters: - testGroup: innerloop - nameSuffix: RuntimeFlavor_Mono - buildArgs: /p:RuntimeFlavor=Mono - timeoutInMinutes: 120 - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build with RuntimeFlavor only. This exercise code paths where only RuntimeFlavor is + # # specified. Catches cases where we depend on Configuration also being specified + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: debug + # platforms: + # - linux_x64_dev_innerloop + # jobParameters: + # testGroup: innerloop + # nameSuffix: RuntimeFlavor_Mono + # buildArgs: /p:RuntimeFlavor=Mono + # timeoutInMinutes: 120 + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build Mono + Libraries. This exercises the code path where we build libraries without - # first building CoreCLR - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: debug - platforms: - - windows_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Mono_Libraries - buildArgs: -subset mono+libs /p:RuntimeFlavor=Mono - timeoutInMinutes: 120 - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build Mono + Libraries. This exercises the code path where we build libraries without + # # first building CoreCLR + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: debug + # platforms: + # - windows_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Mono_Libraries + # buildArgs: -subset mono+libs /p:RuntimeFlavor=Mono + # timeoutInMinutes: 120 + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build Libraries AllConfigurations. This exercises the code path where we build libraries for all - # configurations on a non Windows operating system. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: debug - platforms: - - linux_x64_dev_innerloop - jobParameters: - nameSuffix: Libraries_AllConfigurations - buildArgs: -subset libs -allconfigurations - timeoutInMinutes: 120 - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build Libraries AllConfigurations. This exercises the code path where we build libraries for all + # # configurations on a non Windows operating system. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: debug + # platforms: + # - linux_x64_dev_innerloop + # jobParameters: + # nameSuffix: Libraries_AllConfigurations + # buildArgs: -subset libs -allconfigurations + # timeoutInMinutes: 120 + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # SourceBuild Build - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - platforms: - - SourceBuild_linux_x64 - jobParameters: - nameSuffix: PortableSourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true) + # # + # # SourceBuild Build + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # platforms: + # - SourceBuild_linux_x64 + # jobParameters: + # nameSuffix: PortableSourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index a785f122fa6ed5..80d2b0b6c32515 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -65,31 +65,31 @@ extends: # Build CoreCLR checked # Only when CoreCLR is changed # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - linux_x86 - # - linux_x64 - # - linux_arm - # - linux_arm64 - # - linux_riscv64 - # - linux_musl_arm - # - linux_musl_arm64 - # - linux_musl_x64 - # - osx_arm64 - # - tizen_armel - # - windows_x86 - # - windows_x64 - # - windows_arm64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - linux_x86 + - linux_x64 + - linux_arm + - linux_arm64 + - linux_riscv64 + - linux_musl_arm + - linux_musl_arm64 + - linux_musl_x64 + - osx_arm64 + - tizen_armel + - windows_x86 + - windows_x64 + - windows_arm64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) # # # # Build the whole product using GNU compiler toolchain @@ -1452,8 +1452,6 @@ extends: helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml buildConfig: Release runtimeFlavor: mono - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }} platforms: - ios_arm64 - tvos_arm64 From fbcf861ee55ed88e8639c31c1f3ec8c45a13edf6 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 11 May 2023 13:16:13 +0200 Subject: [PATCH 03/72] Run iOS runtime tests only --- eng/pipelines/runtime.yml | 59 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 80d2b0b6c32515..19213153586056 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,35 +61,35 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build the whole product using GNU compiler toolchain @@ -1454,7 +1454,6 @@ extends: runtimeFlavor: mono platforms: - ios_arm64 - - tvos_arm64 variables: - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - name: _HelixSource From 9f088ca7c01e3276728158b716bea861dd11c48f Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 11 May 2023 13:20:59 +0200 Subject: [PATCH 04/72] Test /eng/pipelines/libraries/helix.yml for runtime tests --- eng/pipelines/runtime.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 19213153586056..5fbaa0cb90472c 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1475,9 +1475,9 @@ extends: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml parameters: testGroup: innerloop - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsTemplate: /eng/pipelines/libraries/helix.yml extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: tree tracing/eventpipe - testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true From e12ca4db6b68b4b6783d0a596844814d8a3aa3c9 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 May 2023 16:11:14 +0200 Subject: [PATCH 05/72] Resolve PR conflicts --- eng/pipelines/runtime.yml | 1464 +++++++++++++++++++------------------ 1 file changed, 750 insertions(+), 714 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 19eaa295dd6af5..907fe864806af2 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1529,529 +1529,777 @@ extends: # eq(variables['monoContainsChange'], true), # eq(variables['isRollingBuild'], true)) - # - # Build Mono and Installer on LLVMJIT mode - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMJIT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build Mono and Installer on LLVMJIT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - linux_x64 - - linux_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMJIT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - linux_x64 + # - linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build Mono and Installer on LLVMAOT mode - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_x64 - - linux_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAOT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build Mono and Installer on LLVMAOT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_x64 + # - linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono debug + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: debug + # platforms: + # - osx_x64 + # - osx_arm64 + # - linux_x64 + # - linux_arm64 + # # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release AOT cross-compilers + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_x64 + # # - linux_arm64 + # # - linux_musl_arm64 + # - windows_x64 + # # - windows_x86 + # # - windows_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - osx_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # - tvos + # - ios + # - maccatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_browser_offsets + # monoCrossAOTTargetOS: + # - browser + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_x64 + # # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries, mono, or the runtime tests changed + # # Currently only these architectures are needed for the runtime tests. + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - osx_x64 + # - linux_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release with LLVM AOT + # # Only when mono, or the runtime tests changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - linux_x64 + # - linux_arm64 + # jobParameters: + # runtimeVariant: llvmaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build libraries using live CoreLib + # # These set of libraries are built always no matter what changed + # # The reason for that is because Corelib and Installer needs it and + # # These are part of the test matrix for Libraries changes. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - linux_arm + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_arm64 + # - windows_x86 + # jobParameters: + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - linux_arm64 + # - linux_musl_x64 + # - linux_x64 + # - osx_arm64 + # - osx_x64 + # - windows_x64 + # - freebsd_x64 + # jobParameters: + # testScope: innerloop + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAOT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Libraries debug build that only runs when coreclr is changed + # # Only do this on PR builds since we use the Release builds for these test runs in CI + # # and those are already built above + # # + # - ${{ if eq(variables['isRollingBuild'], false) }}: + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Debug + # platforms: + # - windows_x86 + # jobParameters: + # condition: >- + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - # - # Build Mono debug - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: debug - platforms: - - osx_x64 - - osx_arm64 - - linux_x64 - - linux_arm64 - # - linux_musl_arm64 - - windows_x64 - - windows_x86 - # - windows_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Libraries release build that only runs when coreclr is changed in PRs + # # We need these for checked coreclr + release libraries tests runs. + # # + # - ${{ if eq(variables['isRollingBuild'], false) }}: + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - # - # Build Mono release AOT cross-compilers - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_x64 - # - linux_arm64 - # - linux_musl_arm64 - - windows_x64 - # - windows_x86 - # - windows_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - monoCrossAOTTargetOS: - - android - - browser - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # framework: net48 + # runTests: true + # testScope: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - osx_x64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets - monoCrossAOTTargetOS: - - android - - browser - - tvos - - ios - - maccatalyst - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # jobParameters: + # framework: allConfigurations + # runTests: true + # useHelix: false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_arm64 - - osx_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_browser_offsets - monoCrossAOTTargetOS: - - browser - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Installer Build and Test + # # These are always built since they only take like 15 minutes + # # we expect these to be done before we finish libraries or coreclr testing. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x86 + # - windows_arm64 + # - linux_arm + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: Release + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build Mono release - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_x64 - # - linux_musl_arm64 - - windows_x64 - - windows_x86 - # - windows_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: Release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm64 + # - linux_musl_x64 + # - windows_x64 + # - freebsd_x64 + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build Mono release - # Only when libraries, mono, or the runtime tests changed - # Currently only these architectures are needed for the runtime tests. - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - osx_x64 - - linux_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR Test builds using live libraries release build + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: checked + # platforms: + # - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build Mono release with LLVM AOT - # Only when mono, or the runtime tests changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - linux_x64 - - linux_arm64 - jobParameters: - runtimeVariant: llvmaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR Test executions using live libraries + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - linux_arm + # - windows_x86 + # - windows_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: Release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # - linux_x64 + # - linux_arm64 + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build libraries using live CoreLib - # These set of libraries are built always no matter what changed - # The reason for that is because Corelib and Installer needs it and - # These are part of the test matrix for Libraries changes. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - linux_arm - - linux_musl_arm - - linux_musl_arm64 - - windows_arm64 - - windows_x86 - jobParameters: - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - osx_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - linux_arm64 - - linux_musl_x64 - - linux_x64 - - osx_arm64 - - osx_x64 - - windows_x64 - - freebsd_x64 - jobParameters: - testScope: innerloop - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Libraries debug build that only runs when coreclr is changed - # Only do this on PR builds since we use the Release builds for these test runs in CI - # and those are already built above - # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Debug - platforms: - - windows_x86 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: minijit + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Libraries release build that only runs when coreclr is changed in PRs - # We need these for checked coreclr + release libraries tests runs. - # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + # # + # # Build the whole product using Mono and run runtime tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - osx_x64 + # - linux_arm64 + # variables: + # - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + # - name: _HelixSource + # value: pr/dotnet/runtime/$(Build.SourceBranch) + # - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + # - name: _HelixSource + # value: ci/dotnet/runtime/$(Build.SourceBranch) + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_RuntimeTests + # buildArgs: -s mono+libs -c $(_BuildConfig) + # timeoutInMinutes: 240 + # # extra steps, run tests + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # llvmAotStepContainer: linux_x64_llvmaot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - windows_x86 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - framework: net48 - runTests: true - testScope: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Libraries Release Test Execution against a release mono runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # runtimeDisplayName: mono + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - windows_x64 - jobParameters: - framework: allConfigurations - runTests: true - useHelix: false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Libraries Release Test Execution against a release mono interpreter runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # #- osx_x64 + # - linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # interpreter: true + # runtimeDisplayName: mono_interpreter + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Installer Build and Test - # These are always built since they only take like 15 minutes - # we expect these to be done before we finish libraries or coreclr testing. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - linux_musl_arm - - linux_musl_arm64 - - windows_x86 - - windows_arm64 - - linux_arm - jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: Release - runOnlyIfDependenciesSucceeded: true - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Libraries Release Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: Release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm64 - - linux_musl_x64 - - windows_x64 - - freebsd_x64 - jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runOnlyIfDependenciesSucceeded: true - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Libraries Debug Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # - osx_x64 + # - linux_x64 + # - linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # CoreCLR Test builds using live libraries release build - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: checked - platforms: - - CoreClrTestBuildHost # Either osx_x64 or linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # The next three jobs run checked coreclr + libraries tests. + # # The matrix looks like the following, where the right columns specify which configurations + # # the libraries tests are built in. + # # ________________________________________ + # # | Platform | PR | Rolling | + # # | ---------------- | ------- | ------- | + # # | linux-arm64 | Debug | Release | + # # | windows-x86 | Debug | Release | + # # | linux-musl-x64 | Debug | Release | + # # | OSX-x64 | Debug | Release | + # # | linux-musl-arm | Release | Release | + # # | linux-musl-arm64 | Release | Release | + # # | linux-x64 | Release | Release | + # # | windows-x64 | Release | Release | - # - # CoreCLR Test executions using live libraries - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - linux_arm - - windows_x86 - - windows_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: Release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # # Only when the PR contains a coreclr change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - linux_arm64 + # - windows_x86 + # - linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - osx_x64 - - linux_x64 - - linux_arm64 - - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Release Libraries Test Execution against a checked runtime + # # Only if CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_x64 + # - windows_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - osx_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - osx_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Mono Test builds with CoreCLR runtime tests using live libraries debug build - # Only when Mono is changed - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - CoreClrTestBuildHost # Either osx_x64 or linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Sourcebuild legs + # # We have 3 important legs for source-build: + # # - Centos.8 (ensures that known non-portable RID is working) + # # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # # + # # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.8 in rolling CI, + # # Run Linux-x64 in PR. - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - liveRuntimeBuildConfig: release - runtimeVariant: minijit - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_centos8_x64 + # jobParameters: + # nameSuffix: centos8SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_banana24_x64 + # jobParameters: + # nameSuffix: banana24SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) - # - # Build the whole product using Mono and run runtime tests - # - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/global-build-job.yml @@ -2059,8 +2307,7 @@ extends: buildConfig: Release runtimeFlavor: mono platforms: - - osx_x64 - - linux_arm64 + - ios_arm64 variables: - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - name: _HelixSource @@ -2085,217 +2332,6 @@ extends: extraStepsTemplate: /eng/pipelines/libraries/helix.yml extraStepsParameters: creator: dotnet-bot - llvmAotStepContainer: linux_x64_llvmaot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # Libraries Release Test Execution against a release mono runtime. - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - runtimeFlavor: mono - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - windows_x64 - - osx_x64 - - linux_arm64 - - linux_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - runtimeDisplayName: mono - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release mono interpreter runtime. - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - runtimeFlavor: mono - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - windows_x64 - #- osx_x64 - - linux_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - interpreter: true - runtimeDisplayName: mono_interpreter - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release coreclr runtime - # Only when the PR contains a libraries change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - windows_x86 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Debug Test Execution against a release coreclr runtime - # Only when the PR contains a libraries change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - windows_x64 - - osx_x64 - - linux_x64 - - linux_musl_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # The next three jobs run checked coreclr + libraries tests. - # The matrix looks like the following, where the right columns specify which configurations - # the libraries tests are built in. - # ________________________________________ - # | Platform | PR | Rolling | - # | ---------------- | ------- | ------- | - # | linux-arm64 | Debug | Release | - # | windows-x86 | Debug | Release | - # | linux-musl-x64 | Debug | Release | - # | OSX-x64 | Debug | Release | - # | linux-musl-arm | Release | Release | - # | linux-musl-arm64 | Release | Release | - # | linux-x64 | Release | Release | - # | windows-x64 | Release | Release | - - # - # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime - # Only when the PR contains a coreclr change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - linux_arm64 - - windows_x86 - - linux_musl_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Release Libraries Test Execution against a checked runtime - # Only if CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - linux_musl_arm - - linux_musl_arm64 - - linux_x64 - - windows_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - osx_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Sourcebuild legs - # We have 3 important legs for source-build: - # - Centos.8 (ensures that known non-portable RID is working) - # - Linux-x64 portable (used for dependency flow and downstream PR verification) - # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. - # - # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.8 in rolling CI, - # Run Linux-x64 in PR. - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - helixQueueGroup: pr - platforms: - - SourceBuild_centos8_x64 - jobParameters: - nameSuffix: centos8SourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: eq(variables['isRollingBuild'], true) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - helixQueueGroup: pr - platforms: - - SourceBuild_banana24_x64 - jobParameters: - nameSuffix: banana24SourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: eq(variables['isRollingBuild'], true) + # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true \ No newline at end of file From 439e82934f93fd162f6cb588a55d28e6c2f77474 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 19 May 2023 12:25:04 +0200 Subject: [PATCH 06/72] Update ProxyProjectForAOTOnHelix.proj to be compliant with runtime tests --- eng/testing/tests.ioslike.targets | 11 +++++--- eng/testing/tests.mobile.targets | 5 ++-- .../msbuild/apple/build/AppleBuild.targets | 22 ++++++++++++--- .../apple/data/ProxyProjectForAOTOnHelix.proj | 1 + src/tests/Directory.Build.targets | 18 +++++++++++++ src/tests/build.proj | 27 +++++++++++-------- 6 files changed, 64 insertions(+), 20 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 905488251c2d7c..6e443524260f4a 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -61,10 +61,11 @@ - - - + + + <_ApplePropertyNames Include="AssemblyName" /> <_ApplePropertyNames Include="MonoEnableLLVM" /> + <_ApplePropertyNames Include="CoreRootPath" /> + <_ApplePropertyNames Include="RuntimeTests" /> <_ApplePropertiesToPass Include="$(%(_ApplePropertyNames.Identity))" diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets index b150d2b5478fc3..2770c97df7d678 100644 --- a/eng/testing/tests.mobile.targets +++ b/eng/testing/tests.mobile.targets @@ -8,7 +8,8 @@ $([MSBuild]::NormalizePath('$(BundleDir)', '$(RunScriptOutputName)')) true - Publish + Publish + Build true @@ -155,7 +156,7 @@ + + + + + UseLLVM="false"> @@ -235,10 +243,18 @@ + + + + + $(TestRootDir)AppBundle\ $(OriginalPublishDir)AppleTestRunner.dll + true diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index 6a6bdcba99dfde..8093a0a1ec50ab 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -9,6 +9,24 @@ + + $(TargetOS).$(Platform).$(Configuration) + $(ArtifactsDir)helix/ + $(TestArchiveRoot)tests/ + $(TestArchiveTestsRoot)$(OSPlatformConfig)/ + $(TestArchiveRoot)runtime/ + + true + true + + BuildiOSApp + BuildiOSApp + GenerateRunScript + true + $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/tracing_eventpipe/ + + + true diff --git a/src/tests/build.proj b/src/tests/build.proj index e0b7398f1d7a5f..6c01ab67c07e2f 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -316,7 +316,7 @@ $([MSBuild]::NormalizeDirectory('$(BuildDir)', 'AppBundle')) - + @@ -407,7 +407,7 @@ TaskParameter="Filtered" ItemName="_AotInputAssembliesDedup"/> - + - + - - + --> - - + --> - + + + $(BuildDir)/ + $(AssemblyName) + $(CORE_ROOT) + From 10a906699a6c5e3b55d904122b8e7183d7a4103c Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 19 May 2023 12:28:29 +0200 Subject: [PATCH 07/72] Disable CI jobs --- eng/pipelines/runtime.yml | 970 +++++++++++++++++++------------------- 1 file changed, 485 insertions(+), 485 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 5529feefe6b27f..b89f5f7da10730 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,510 +61,510 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Native_GCC - buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - extraStepsParameters: - testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Native_GCC + # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + # extraStepsParameters: + # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;" /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;" /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: CLR_Tools_Tests - buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test - enablePublishTestResults: true - testResultsFormat: 'xunit' - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: CLR_Tools_Tests + # buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + # enablePublishTestResults: true + # testResultsFormat: 'xunit' + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - WasmTestOnBrowser + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:MonoWasmBuildVariant=perftrace - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} - # WASI/WASM + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:MonoWasmBuildVariant=perftrace + # alwaysRun: ${{ variables.isRollingBuild }} + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # MacCatalyst interp - requires AOT Compilation and Interp flags From 9c90cb1ac7f4225bb903fedce477d1c07e00ccd3 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 19 May 2023 12:46:15 +0200 Subject: [PATCH 08/72] Parametrize UseLLVM in MonoAOTCompiler --- src/mono/msbuild/apple/build/AppleBuild.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 24d8746bb2cdb5..d625d4024bb424 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -219,7 +219,7 @@ OutputDir="$(_MobileIntermediateOutputPath)" OutputType="AsmOnly" UseAotDataFile="$(_UseAotDataFile)" - UseLLVM="false"> + UseLLVM="$(MonoEnableLLVM)"> From 614102393b6123bcf0af0944435ac5d26907288c Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 22 May 2023 14:17:49 +0200 Subject: [PATCH 09/72] Revert extraStepsTemplate for iOS --- eng/pipelines/runtime.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index b89f5f7da10730..f97bd2cbef7d31 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1411,9 +1411,9 @@ extends: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml parameters: testGroup: innerloop - extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true \ No newline at end of file + testBuildArgs: tree tracing/eventpipe + testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file From 8672840e9f21def217578161b642b600c1370eff Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 22 May 2023 14:20:06 +0200 Subject: [PATCH 10/72] Disable other tests --- eng/pipelines/runtime.yml | 978 +++++++++++++++++++------------------- 1 file changed, 489 insertions(+), 489 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index d75bc08f8aa081..d60931464cc2ed 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,514 +61,514 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Native_GCC - buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - extraStepsParameters: - testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Native_GCC + # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + # extraStepsParameters: + # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing;" /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing;" /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: CLR_Tools_Tests - buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test - enablePublishTestResults: true - testResultsFormat: 'xunit' - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: CLR_Tools_Tests + # buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + # enablePublishTestResults: true + # testResultsFormat: 'xunit' + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - WasmTestOnBrowser + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:MonoWasmBuildVariant=perftrace - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} - # WASI/WASM + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:MonoWasmBuildVariant=perftrace + # alwaysRun: ${{ variables.isRollingBuild }} - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # MacCatalyst interp - requires AOT Compilation and Interp flags From fe40f9b2cabea7d661d434c0dacbe280002c6ea6 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 22 May 2023 15:55:22 +0200 Subject: [PATCH 11/72] Build src/tests/tracing dir --- .../extra-platforms/runtime-extra-platforms-ioslike.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index f856d6211df258..73304263997dba 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -83,5 +83,5 @@ jobs: extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: tree tracing/eventpipe + testBuildArgs: dir tracing testRunNamePrefixSuffix: Mono_$(_BuildConfig) From 779a39adeb38f98daf2a01e1f840e54b3621cde1 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 22 May 2023 18:09:20 +0200 Subject: [PATCH 12/72] Build src/tests/tracing dir --- .../extra-platforms/runtime-extra-platforms-ioslike.yml | 2 +- eng/pipelines/runtime.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index 73304263997dba..f856d6211df258 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -83,5 +83,5 @@ jobs: extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: dir tracing + testBuildArgs: tree tracing/eventpipe testRunNamePrefixSuffix: Mono_$(_BuildConfig) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index d60931464cc2ed..78f9a7c0de1323 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1419,5 +1419,5 @@ extends: extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: tree tracing/eventpipe + testBuildArgs: dir tracing testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file From 1e66f9d703bc1b2fae12d8a152dcc200cbd67b1b Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 22 May 2023 19:03:25 +0200 Subject: [PATCH 13/72] Remove testBuildArgs param --- eng/pipelines/runtime.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 78f9a7c0de1323..602eb1a393e45d 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1419,5 +1419,4 @@ extends: extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: dir tracing testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file From 3ad22d4edd319db00ad61d52ee150413caa1d66d Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 30 May 2023 10:39:02 +0200 Subject: [PATCH 14/72] Disable other tests --- eng/pipelines/runtime.yml | 978 +++++++++++++++++++------------------- 1 file changed, 489 insertions(+), 489 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index b8d7c1d2c27c6c..6a4ca1036a1ce0 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,514 +61,514 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Native_GCC - buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - extraStepsParameters: - testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Native_GCC + # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + # extraStepsParameters: + # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/simpleprovidervalidation;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/simpleprovidervalidation;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: CLR_Tools_Tests - buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test - enablePublishTestResults: true - testResultsFormat: 'xunit' - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: CLR_Tools_Tests + # buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + # enablePublishTestResults: true + # testResultsFormat: 'xunit' + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - WasmTestOnBrowser + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:MonoWasmBuildVariant=perftrace - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} - # WASI/WASM + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:MonoWasmBuildVariant=perftrace + # alwaysRun: ${{ variables.isRollingBuild }} - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # MacCatalyst interp - requires AOT Compilation and Interp flags From 9ccf1fc1200c4201fd51705c9d74001849722afd Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 30 May 2023 12:06:44 +0200 Subject: [PATCH 15/72] Fix OutDir path to allow bundle archive --- eng/pipelines/runtime.yml | 1 + eng/testing/tests.targets | 4 ++++ src/tests/Directory.Build.targets | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 6a4ca1036a1ce0..e64f83efaf00c7 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1419,4 +1419,5 @@ extends: extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 + testBuildArgs: tree tracing/eventpipe testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 1677d0f4c328d6..05e30e823c537a 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -127,6 +127,10 @@ + + $([MSBuild]::NormalizePath('$(CustomRunScriptOutputPath)', '$(RunScriptOutputName)')) + + BuildiOSApp GenerateRunScript true - $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/tracing_eventpipe/ + + + $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle + + + true From eab465839242d5179946ba3c9d7d0485d20b964f Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 30 May 2023 13:59:30 +0200 Subject: [PATCH 16/72] Copy app publish payload to legacy payload root directory --- src/tests/Common/helixpublishwitharcade.proj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index 13f4894de7c78e..3de7e606788d96 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -608,6 +608,10 @@ Condition="'@(LegacyPayloads)' != ''" SourceDirectory="@(LegacyPayloads->Metadata('PayloadDirectory'))" DestinationFile="$(LegacyPayloadsRootDirectory)\%(LegacyPayloads.PayloadGroup).zip" /> + + From 6db8ce0d462488708728cdde4397e5ba44496bd8 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 30 May 2023 14:52:16 +0200 Subject: [PATCH 17/72] Copy app publish payload to legacy payload root directory --- .../Common/Coreclr.TestWrapper/MobileAppHandler.cs | 12 +++++++++++- src/tests/Common/helixpublishwitharcade.proj | 3 ++- src/tests/xunit-wrappers.targets | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs b/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs index b90ddb19721550..b3f0e1b9a8177f 100644 --- a/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs +++ b/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs @@ -22,6 +22,11 @@ public class MobileAppHandler // 91 - ADB_FAILURE private static readonly int[] _knownExitCodes = new int[] { 78, 81, 82, 83, 84, 86, 88, 89, 90, 91 }; + public int CompileMobileApp(string platform, string category, string testBinaryBase, string reportBase, string targetOS) + { + return HandleMobileApp("compile", platform, category, testBinaryBase, reportBase, targetOS); + } + public int InstallMobileApp(string platform, string category, string testBinaryBase, string reportBase, string targetOS) { return HandleMobileApp("install", platform, category, testBinaryBase, reportBase, targetOS); @@ -54,7 +59,7 @@ private static int HandleMobileApp(string action, string platform, string catego platformValueFlag = false; } - if ((action != "install") && (action != "uninstall")) + if ((action != "compile") && (action != "install") && (action != "uninstall")) { outputWriter.WriteLine($"Incorrect value of action. Provided {action}. Valid strings are install and uninstall."); actionValueFlag = false; @@ -109,6 +114,11 @@ private static int HandleMobileApp(string action, string platform, string catego { cmdStr += $" --app=net.dot.{category}"; } + + if (action == "compile") + { + cmdStr = $"./build-apple-app.sh"; + } } if (action == "install") diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index 3de7e606788d96..a53e9316dc99d4 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -602,6 +602,7 @@ $([MSBuild]::MakeRelative($(LegacyPayloadsRootDirectory), %(FullPath))) %(FullPath) + diff --git a/src/tests/xunit-wrappers.targets b/src/tests/xunit-wrappers.targets index 6f61f30dec57bd..4b10319878a320 100644 --- a/src/tests/xunit-wrappers.targets +++ b/src/tests/xunit-wrappers.targets @@ -219,6 +219,9 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). string operatingSystem = Environment.GetEnvironmentVariable("OS")%3B runningInWindows = (operatingSystem != null && operatingSystem.StartsWith("Windows"))%3B + retCode = handler.CompileMobileApp(%22$(MobilePlatform)%22, category, testBinaryBase, reportBase, %22$(TargetOS)%22.ToLowerInvariant())%3B + Assert.True(retCode == 0, "Failed to AOT compile mobile app.")%3B + retCode = handler.InstallMobileApp(%22$(MobilePlatform)%22, category, testBinaryBase, reportBase, %22$(TargetOS)%22.ToLowerInvariant())%3B Assert.True(retCode == 0, "Failed to install mobile app.")%3B } From 38d1df47a1dfc38163e781af5a99fa2a99943643 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 30 May 2023 16:27:01 +0200 Subject: [PATCH 18/72] Add verbose logs --- src/tests/Common/helixpublishwitharcade.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index a53e9316dc99d4..69c906d58ac326 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -610,6 +610,7 @@ SourceDirectory="@(LegacyPayloads->Metadata('PayloadDirectory'))" DestinationFile="$(LegacyPayloadsRootDirectory)\%(LegacyPayloads.PayloadGroup).zip" /> + From f8d65c5b2436955bf73ebce30a5eac7b9d4c3edc Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 31 May 2023 15:06:29 +0200 Subject: [PATCH 19/72] Temporary path to test the CI --- .../Coreclr.TestWrapper/MobileAppHandler.cs | 3 ++- src/tests/Common/helixpublishwitharcade.proj | 15 +++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs b/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs index b3f0e1b9a8177f..c98af12f07bc93 100644 --- a/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs +++ b/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs @@ -117,7 +117,8 @@ private static int HandleMobileApp(string action, string platform, string catego if (action == "compile") { - cmdStr = $"./build-apple-app.sh"; + // Temporary patch, test the CI + cmdStr = $"ls -la && ./build-apple-app.sh"; } } diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index 69c906d58ac326..649c015e2d4bbc 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -60,7 +60,6 @@ --> - @@ -148,7 +147,7 @@ <_BuildInParallel Condition=" '@(_ProjectsToBuild->Count())' > '1' ">true - + @@ -280,9 +279,15 @@ + + + + + + @@ -602,18 +607,12 @@ $([MSBuild]::MakeRelative($(LegacyPayloadsRootDirectory), %(FullPath))) %(FullPath) - - - - From c3852de92c188888222480888fc29ca5785ac511 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 31 May 2023 16:25:29 +0200 Subject: [PATCH 20/72] Temporary path to test the CI --- src/tests/Common/helixpublishwitharcade.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index 649c015e2d4bbc..815f38ad146bda 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -147,7 +147,7 @@ <_BuildInParallel Condition=" '@(_ProjectsToBuild->Count())' > '1' ">true - + From 1a98364f4cf2786e4260593cf256bb36383e0cc4 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 6 Jun 2023 13:53:58 +0200 Subject: [PATCH 21/72] Test libraries pipeline on runtime tests --- .../build-runtime-tests-and-send-to-helix.yml | 94 ++++++++++++------- eng/pipelines/runtime.yml | 3 +- 2 files changed, 63 insertions(+), 34 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index e531acb6384159..c67b9c62e2b640 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -76,48 +76,76 @@ steps: __MonoToolPrefix: aarch64-linux-gnu- # Send tests to Helix - - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml - parameters: - displayName: Send tests to Helix - buildConfig: $(buildConfigUpper) - archType: ${{ parameters.archType }} - osGroup: ${{ parameters.osGroup }} - osSubgroup: ${{ parameters.osSubgroup}} - coreClrRepoRoot: $(Build.SourcesDirectory)/src/coreclr - shouldContinueOnError: ${{ parameters.shouldContinueOnError }} - runtimeFlavor: ${{ parameters.runtimeFlavor }} - runtimeVariant: ${{ parameters.runtimeVariant }} + - script: $(_msbuildCommand) $(_warnAsErrorParamHelixOverride) -restore + $(Build.SourcesDirectory)/src/libraries/sendtohelix.proj + /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} + /p:TargetArchitecture=${{ parameters.archType }} + /p:TargetRuntimeIdentifier=${{ parameters.targetRid }} + /p:Configuration=${{ parameters.buildConfig }} + /p:TargetOS=${{ parameters.osGroup }} + /p:MonoForceInterpreter=${{ parameters.interpreter }} + /p:TestScope=${{ parameters.testScope }} + /p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }} + /p:HelixBuild=$(Build.BuildNumber) + ${{ parameters.extraHelixArguments }} + /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog + displayName: Send to Helix + condition: and(succeeded(), ${{ parameters.condition }}) + continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }} + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops + _Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + HelixAccessToken: $(HelixApiAccessToken) + HelixTargetQueues: ${{ replace(lower(join('+', parameters.helixQueues)), '.open', '') }} + Creator: '' ${{ if eq(variables['System.TeamProject'], 'public') }}: - creator: $(Build.DefinitionName) + HelixTargetQueues: ${{ join('+', parameters.helixQueues) }} + Creator: ${{ parameters.creator }} + + # - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml + # parameters: + # displayName: Send tests to Helix + # buildConfig: $(buildConfigUpper) + # archType: ${{ parameters.archType }} + # osGroup: ${{ parameters.osGroup }} + # osSubgroup: ${{ parameters.osSubgroup}} + # coreClrRepoRoot: $(Build.SourcesDirectory)/src/coreclr + # shouldContinueOnError: ${{ parameters.shouldContinueOnError }} + # runtimeFlavor: ${{ parameters.runtimeFlavor }} + # runtimeVariant: ${{ parameters.runtimeVariant }} + + # ${{ if eq(variables['System.TeamProject'], 'public') }}: + # creator: $(Build.DefinitionName) - helixBuild: $(Build.BuildNumber) - helixSource: $(_HelixSource) + # helixBuild: $(Build.BuildNumber) + # helixSource: $(_HelixSource) - ${{ if ne(parameters.readyToRun, true) }}: - helixType: 'test/functional/cli/' + # ${{ if ne(parameters.readyToRun, true) }}: + # helixType: 'test/functional/cli/' - helixQueues: ${{ parameters.helixQueues }} + # helixQueues: ${{ parameters.helixQueues }} - # This tests whether an array is empty - ${{ if eq(join('', parameters.helixQueues), '') }}: - condition: false + # # This tests whether an array is empty + # ${{ if eq(join('', parameters.helixQueues), '') }}: + # condition: false - publishTestResults: true + # publishTestResults: true - timeoutPerTestInMinutes: $(timeoutPerTestInMinutes) - timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes) + # timeoutPerTestInMinutes: $(timeoutPerTestInMinutes) + # timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes) - runCrossGen2: ${{ eq(parameters.readyToRun, true) }} - compositeBuildMode: ${{ parameters.compositeBuildMode }} - runInUnloadableContext: ${{ parameters.runInUnloadableContext }} - nativeAotTest: ${{ parameters.nativeAotTest }} + # runCrossGen2: ${{ eq(parameters.readyToRun, true) }} + # compositeBuildMode: ${{ parameters.compositeBuildMode }} + # runInUnloadableContext: ${{ parameters.runInUnloadableContext }} + # nativeAotTest: ${{ parameters.nativeAotTest }} - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - # Access token variable for internal project from the - # DotNet-HelixApi-Access variable group - helixAccessToken: $(HelixApiAccessToken) + # ${{ if eq(variables['System.TeamProject'], 'internal') }}: + # # Access token variable for internal project from the + # # DotNet-HelixApi-Access variable group + # helixAccessToken: $(HelixApiAccessToken) - helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj' + # helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj' - scenarios: ${{ parameters.scenarios }} + # scenarios: ${{ parameters.scenarios }} diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index e64f83efaf00c7..1bd5f7aea1b0e0 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1420,4 +1420,5 @@ extends: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 testBuildArgs: tree tracing/eventpipe - testRunNamePrefixSuffix: Mono_$(_BuildConfig) \ No newline at end of file + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true From f0349cadaf64782d7237c674b488359c16fc76a5 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 6 Jun 2023 14:44:53 +0200 Subject: [PATCH 22/72] Test libraries pipeline on runtime tests --- src/tests/Directory.Build.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index bab91c8ce31d5a..44984e36afcc5b 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -10,7 +10,7 @@ Condition="'$(DisableVersionCheckImported)' != 'true'" /> - $(TargetOS).$(Platform).$(Configuration) + $(TargetOS).AnyCPU.$(Configuration) $(ArtifactsDir)helix/ $(TestArchiveRoot)tests/ $(TestArchiveTestsRoot)$(OSPlatformConfig)/ From 390688f6944d772d687e62036667be4a675f3bde Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 6 Jun 2023 19:41:37 +0200 Subject: [PATCH 23/72] Disable other tests --- eng/pipelines/runtime.yml | 978 +++++++++++++++++++------------------- 1 file changed, 489 insertions(+), 489 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 092b2240f67fbc..0d644166946054 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,514 +61,514 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Native_GCC - buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - extraStepsParameters: - testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Native_GCC + # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + # extraStepsParameters: + # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/simpleprovidervalidation;"' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/simpleprovidervalidation;"' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: CLR_Tools_Tests - buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test - enablePublishTestResults: true - testResultsFormat: 'xunit' - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: CLR_Tools_Tests + # buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + # enablePublishTestResults: true + # testResultsFormat: 'xunit' + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - WasmTestOnBrowser + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:MonoWasmBuildVariant=perftrace - alwaysRun: ${{ variables.isRollingBuild }} + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} - # WASI/WASM + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:MonoWasmBuildVariant=perftrace + # alwaysRun: ${{ variables.isRollingBuild }} + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # MacCatalyst interp - requires AOT Compilation and Interp flags From 62955a960acab0bac0f8c933c87707361bf8e755 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 13 Jun 2023 16:29:43 +0200 Subject: [PATCH 24/72] Disable tests --- eng/pipelines/runtime-linker-tests.yml | 48 +- eng/pipelines/runtime.yml | 1000 ++++++++++++------------ 2 files changed, 524 insertions(+), 524 deletions(-) diff --git a/eng/pipelines/runtime-linker-tests.yml b/eng/pipelines/runtime-linker-tests.yml index 178f9c9edc05ed..ad7a6df8a7f58b 100644 --- a/eng/pipelines/runtime-linker-tests.yml +++ b/eng/pipelines/runtime-linker-tests.yml @@ -105,27 +105,27 @@ extends: # buildArgs: -s clr+libs -c $(_BuildConfig) # extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml - # - # Build Release config vertical for Browser-wasm - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - browser_wasm - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: Runtime_Release - buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false -p:AotHostArchitecture=x64 -p:AotHostOS=$(_hostedOS) - condition: - or( - eq(variables['isRollingBuild'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true)) - extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml - extraStepsParameters: - extraTestArgs: '/p:WasmBuildNative=false' + # # + # # Build Release config vertical for Browser-wasm + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - browser_wasm + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: Runtime_Release + # buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false -p:AotHostArchitecture=x64 -p:AotHostOS=$(_hostedOS) + # condition: + # or( + # eq(variables['isRollingBuild'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true)) + # extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml + # extraStepsParameters: + # extraTestArgs: '/p:WasmBuildNative=false' diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 91f1a2f161646c..2a43967d4ca218 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,522 +61,522 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Native_GCC - buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - extraStepsParameters: - testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Native_GCC + # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + # extraStepsParameters: + # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/diagnosticport;tracing/eventpipe/reverse;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/diagnosticport;tracing/eventpipe/reverse;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/simpleprovidervalidation;"' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/simpleprovidervalidation;"' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: CLR_Tools_Tests - buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test - enablePublishTestResults: true - testResultsFormat: 'xunit' - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: CLR_Tools_Tests + # buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + # enablePublishTestResults: true + # testResultsFormat: 'xunit' + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - scenarios: - - normal - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - scenarios: - - WasmTestOnBrowser - - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:MonoWasmBuildVariant=perftrace /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - alwaysRun: ${{ variables.isRollingBuild }} + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # scenarios: + # - WasmTestOnBrowser + + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # WASI/WASM + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - alwaysRun: ${{ variables.isRollingBuild }} + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:MonoWasmBuildVariant=perftrace /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # alwaysRun: ${{ variables.isRollingBuild }} + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # MacCatalyst interp - requires AOT Compilation and Interp flags From fd02ec3253a99a0d2266fbba4a048abb3aba6def Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 24 Jun 2023 12:14:19 +0200 Subject: [PATCH 25/72] Update the runtime tests to use sendtohelix proj --- .../build-runtime-tests-and-send-to-helix.yml | 151 +++++++++--------- eng/testing/tests.ioslike.targets | 2 + .../msbuild/apple/build/AppleBuild.targets | 7 + .../apple/data/ProxyProjectForAOTOnHelix.proj | 3 +- .../Coreclr.TestWrapper/MobileAppHandler.cs | 13 +- src/tests/Common/helixpublishwitharcade.proj | 1 + src/tests/build.proj | 56 ------- src/tests/xunit-wrappers.targets | 3 - 8 files changed, 89 insertions(+), 147 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index c67b9c62e2b640..27e88f806d1c26 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -75,77 +75,80 @@ steps: env: __MonoToolPrefix: aarch64-linux-gnu- - # Send tests to Helix - - script: $(_msbuildCommand) $(_warnAsErrorParamHelixOverride) -restore - $(Build.SourcesDirectory)/src/libraries/sendtohelix.proj - /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} - /p:TargetArchitecture=${{ parameters.archType }} - /p:TargetRuntimeIdentifier=${{ parameters.targetRid }} - /p:Configuration=${{ parameters.buildConfig }} - /p:TargetOS=${{ parameters.osGroup }} - /p:MonoForceInterpreter=${{ parameters.interpreter }} - /p:TestScope=${{ parameters.testScope }} - /p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }} - /p:HelixBuild=$(Build.BuildNumber) - ${{ parameters.extraHelixArguments }} - /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog - displayName: Send to Helix - condition: and(succeeded(), ${{ parameters.condition }}) - continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }} - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops - _Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - HelixAccessToken: $(HelixApiAccessToken) - HelixTargetQueues: ${{ replace(lower(join('+', parameters.helixQueues)), '.open', '') }} - Creator: '' - ${{ if eq(variables['System.TeamProject'], 'public') }}: - HelixTargetQueues: ${{ join('+', parameters.helixQueues) }} - Creator: ${{ parameters.creator }} - - # - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml - # parameters: - # displayName: Send tests to Helix - # buildConfig: $(buildConfigUpper) - # archType: ${{ parameters.archType }} - # osGroup: ${{ parameters.osGroup }} - # osSubgroup: ${{ parameters.osSubgroup}} - # coreClrRepoRoot: $(Build.SourcesDirectory)/src/coreclr - # shouldContinueOnError: ${{ parameters.shouldContinueOnError }} - # runtimeFlavor: ${{ parameters.runtimeFlavor }} - # runtimeVariant: ${{ parameters.runtimeVariant }} - - # ${{ if eq(variables['System.TeamProject'], 'public') }}: - # creator: $(Build.DefinitionName) - - # helixBuild: $(Build.BuildNumber) - # helixSource: $(_HelixSource) - - # ${{ if ne(parameters.readyToRun, true) }}: - # helixType: 'test/functional/cli/' - - # helixQueues: ${{ parameters.helixQueues }} - - # # This tests whether an array is empty - # ${{ if eq(join('', parameters.helixQueues), '') }}: - # condition: false - - # publishTestResults: true - - # timeoutPerTestInMinutes: $(timeoutPerTestInMinutes) - # timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes) - - # runCrossGen2: ${{ eq(parameters.readyToRun, true) }} - # compositeBuildMode: ${{ parameters.compositeBuildMode }} - # runInUnloadableContext: ${{ parameters.runInUnloadableContext }} - # nativeAotTest: ${{ parameters.nativeAotTest }} - - # ${{ if eq(variables['System.TeamProject'], 'internal') }}: - # # Access token variable for internal project from the - # # DotNet-HelixApi-Access variable group - # helixAccessToken: $(HelixApiAccessToken) - - # helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj' - - # scenarios: ${{ parameters.scenarios }} + + # Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64) + - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), in(parameters.osGroup, 'ios', 'iossimulator', 'tvos', 'tvossimulator', 'maccatalyst')) }}: + # Send tests to Helix + - script: $(_msbuildCommand) $(_warnAsErrorParamHelixOverride) -restore + $(Build.SourcesDirectory)/src/libraries/sendtohelix.proj + /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} + /p:TargetArchitecture=${{ parameters.archType }} + /p:TargetRuntimeIdentifier=${{ parameters.targetRid }} + /p:Configuration=${{ parameters.buildConfig }} + /p:TargetOS=${{ parameters.osGroup }} + /p:MonoForceInterpreter=${{ parameters.interpreter }} + /p:TestScope=${{ parameters.testScope }} + /p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }} + /p:HelixBuild=$(Build.BuildNumber) + ${{ parameters.extraHelixArguments }} + /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog + displayName: Send to Helix + condition: and(succeeded(), ${{ parameters.condition }}) + continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }} + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops + _Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list + + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + HelixAccessToken: $(HelixApiAccessToken) + HelixTargetQueues: ${{ replace(lower(join('+', parameters.helixQueues)), '.open', '') }} + Creator: '' + ${{ if eq(variables['System.TeamProject'], 'public') }}: + HelixTargetQueues: ${{ join('+', parameters.helixQueues) }} + Creator: ${{ parameters.creator }} + - ${{ else }}: + - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml + parameters: + displayName: Send tests to Helix + buildConfig: $(buildConfigUpper) + archType: ${{ parameters.archType }} + osGroup: ${{ parameters.osGroup }} + osSubgroup: ${{ parameters.osSubgroup}} + coreClrRepoRoot: $(Build.SourcesDirectory)/src/coreclr + shouldContinueOnError: ${{ parameters.shouldContinueOnError }} + runtimeFlavor: ${{ parameters.runtimeFlavor }} + runtimeVariant: ${{ parameters.runtimeVariant }} + + ${{ if eq(variables['System.TeamProject'], 'public') }}: + creator: $(Build.DefinitionName) + + helixBuild: $(Build.BuildNumber) + helixSource: $(_HelixSource) + + ${{ if ne(parameters.readyToRun, true) }}: + helixType: 'test/functional/cli/' + + helixQueues: ${{ parameters.helixQueues }} + + # This tests whether an array is empty + ${{ if eq(join('', parameters.helixQueues), '') }}: + condition: false + + publishTestResults: true + + timeoutPerTestInMinutes: $(timeoutPerTestInMinutes) + timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes) + + runCrossGen2: ${{ eq(parameters.readyToRun, true) }} + compositeBuildMode: ${{ parameters.compositeBuildMode }} + runInUnloadableContext: ${{ parameters.runInUnloadableContext }} + nativeAotTest: ${{ parameters.nativeAotTest }} + + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + # Access token variable for internal project from the + # DotNet-HelixApi-Access variable group + helixAccessToken: $(HelixApiAccessToken) + + helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj' + + scenarios: ${{ parameters.scenarios }} diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 6e443524260f4a..b46c1a93f4fd2b 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -106,6 +106,8 @@ <_ApplePropertyNames Include="MonoEnableLLVM" /> <_ApplePropertyNames Include="CoreRootPath" /> <_ApplePropertyNames Include="RuntimeTests" /> + <_ApplePropertyNames Include="MonoForceInterpreter" /> + <_ApplePropertyNames Include="UseMonoJustInterp" /> <_ApplePropertiesToPass Include="$(%(_ApplePropertyNames.Identity))" diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index dc2f6e1233f56c..6d0ac3e0ffd777 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -25,6 +25,9 @@ + + - + @@ -155,6 +158,10 @@ <_AotExcludeAssemblies Include="*System.Runtime.WindowsRuntime.dll" /> + <_AssembliesToBundleInternal> + <_InternalForceInterpret Condition="'$(MonoForceInterpreter)' == 'true' and '%(FileName)%(Extension)' != 'System.Private.CoreLib.dll'">true + <_IsNative>false + <_AotInputAssemblies Include="@(_AssembliesToBundleInternal)" Condition="'%(_AssembliesToBundleInternal._InternalForceInterpret)' != 'true'"> diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index a5fb23fe83d342..acf97d34225846 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -29,8 +29,7 @@ $(OriginalPublishDir) $(TestRootDir)AppBundle\ - $(OriginalPublishDir)AppleTestRunner.dll - + $(OriginalPublishDir)AppleTestRunner.dll true diff --git a/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs b/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs index c98af12f07bc93..b90ddb19721550 100644 --- a/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs +++ b/src/tests/Common/Coreclr.TestWrapper/MobileAppHandler.cs @@ -22,11 +22,6 @@ public class MobileAppHandler // 91 - ADB_FAILURE private static readonly int[] _knownExitCodes = new int[] { 78, 81, 82, 83, 84, 86, 88, 89, 90, 91 }; - public int CompileMobileApp(string platform, string category, string testBinaryBase, string reportBase, string targetOS) - { - return HandleMobileApp("compile", platform, category, testBinaryBase, reportBase, targetOS); - } - public int InstallMobileApp(string platform, string category, string testBinaryBase, string reportBase, string targetOS) { return HandleMobileApp("install", platform, category, testBinaryBase, reportBase, targetOS); @@ -59,7 +54,7 @@ private static int HandleMobileApp(string action, string platform, string catego platformValueFlag = false; } - if ((action != "compile") && (action != "install") && (action != "uninstall")) + if ((action != "install") && (action != "uninstall")) { outputWriter.WriteLine($"Incorrect value of action. Provided {action}. Valid strings are install and uninstall."); actionValueFlag = false; @@ -114,12 +109,6 @@ private static int HandleMobileApp(string action, string platform, string catego { cmdStr += $" --app=net.dot.{category}"; } - - if (action == "compile") - { - // Temporary patch, test the CI - cmdStr = $"ls -la && ./build-apple-app.sh"; - } } if (action == "install") diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index e4303a462cc2f9..6f61d940479153 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -60,6 +60,7 @@ --> + diff --git a/src/tests/build.proj b/src/tests/build.proj index fcf0b00d257706..439e3ce0f3ff47 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -407,63 +407,7 @@ TaskParameter="Filtered" ItemName="_AotInputAssembliesDedup"/> - - - - - - - - - $(BuildDir)/ $(AssemblyName) diff --git a/src/tests/xunit-wrappers.targets b/src/tests/xunit-wrappers.targets index 4b10319878a320..6f61f30dec57bd 100644 --- a/src/tests/xunit-wrappers.targets +++ b/src/tests/xunit-wrappers.targets @@ -219,9 +219,6 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). string operatingSystem = Environment.GetEnvironmentVariable("OS")%3B runningInWindows = (operatingSystem != null && operatingSystem.StartsWith("Windows"))%3B - retCode = handler.CompileMobileApp(%22$(MobilePlatform)%22, category, testBinaryBase, reportBase, %22$(TargetOS)%22.ToLowerInvariant())%3B - Assert.True(retCode == 0, "Failed to AOT compile mobile app.")%3B - retCode = handler.InstallMobileApp(%22$(MobilePlatform)%22, category, testBinaryBase, reportBase, %22$(TargetOS)%22.ToLowerInvariant())%3B Assert.True(retCode == 0, "Failed to install mobile app.")%3B } From bc75d222d98fd0bd3e460524f2761c1bd9c0ba29 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 24 Jun 2023 12:15:15 +0200 Subject: [PATCH 26/72] Disable CI jobs --- eng/pipelines/runtime.yml | 984 +++++++++++++++++++------------------- 1 file changed, 492 insertions(+), 492 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 4a082e0254c7c2..228b06dbfe3b47 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,514 +61,514 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - linux_x86 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_riscv64 - - linux_musl_arm - - linux_musl_arm64 - - linux_musl_x64 - - osx_arm64 - - tizen_armel - - windows_x86 - - windows_x64 - - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR checked + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - linux_x86 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_riscv64 + # - linux_musl_arm + # - linux_musl_arm64 + # - linux_musl_x64 + # - osx_arm64 + # - tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - gcc_linux_x64 - jobParameters: - testGroup: innerloop - nameSuffix: Native_GCC - buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - extraStepsParameters: - testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - gcc_linux_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: Native_GCC + # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + # extraStepsParameters: + # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR osx_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - osx_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR osx_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - osx_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - - linux_x64 - - linux_arm - - linux_arm64 - - linux_musl_x64 - - linux_musl_arm - - linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm64 - - freebsd_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - osx_arm64 + # - osx_x64 + # - linux_x64 + # - linux_arm + # - linux_arm64 + # - linux_musl_x64 + # - linux_musl_arm + # - linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm64 + # - freebsd_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Debug - platforms: - - linux_x64 - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: nativeaot tree nativeaot - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Debug + # platforms: + # - linux_x64 + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: nativeaot tree nativeaot + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Checked - platforms: - - windows_x64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/diagnosticport;tracing/eventpipe/reverse;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Checked + # platforms: + # - windows_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/diagnosticport;tracing/eventpipe/reverse;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - platforms: - - linux_x64 - - windows_x64 - - osx_x64 - - linux_arm64 - - windows_arm64 - - osx_arm64 - variables: - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - extraStepsParameters: - creator: dotnet-bot - testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/simpleprovidervalidation;"' - liveLibrariesBuildConfig: Release - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - linux_x64 + # - windows_x64 + # - osx_x64 + # - linux_arm64 + # - windows_arm64 + # - osx_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # extraStepsParameters: + # creator: dotnet-bot + # testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/simpleprovidervalidation;"' + # liveLibrariesBuildConfig: Release + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # parameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - linux_arm64 - - osx_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT_Libraries - buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - linux_x64 - jobParameters: - timeoutInMinutes: 120 - nameSuffix: CLR_Tools_Tests - buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test - enablePublishTestResults: true - testResultsFormat: 'xunit' - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - android_x64 - - browser_wasm - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvossimulator_x64 - - linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - linux_arm64 + # - osx_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT_Libraries + # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - linux_musl_x64 - - linux_riscv64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - linux_x64 + # jobParameters: + # timeoutInMinutes: 120 + # nameSuffix: CLR_Tools_Tests + # buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + # enablePublishTestResults: true + # testResultsFormat: 'xunit' + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - scenarios: - - normal - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - scenarios: - - WasmTestOnBrowser - - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - android_x64 + # - browser_wasm + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvossimulator_x64 + # - linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - linux_musl_x64 + # - linux_riscv64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # scenarios: + # - WasmTestOnBrowser + + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # WASI/WASM + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldContinueOnError: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - alwaysRun: ${{ variables.isRollingBuild }} + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # - # MacCatalyst interp - requires AOT Compilation and Interp flags - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - maccatalyst_x64 - - ${{ if eq(variables['isRollingBuild'], true) }}: - - maccatalyst_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldContinueOnError: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # MacCatalyst interp - requires AOT Compilation and Interp flags + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - maccatalyst_x64 + # - ${{ if eq(variables['isRollingBuild'], true) }}: + # - maccatalyst_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono and Installer on LLVMJIT mode From eb823506994e67a807819e81db582bd4295b62f5 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 24 Jun 2023 13:15:39 +0200 Subject: [PATCH 27/72] Customize sendtohelix params --- .../runtimes/build-runtime-tests-and-send-to-helix.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index 27e88f806d1c26..14d3e18dc7cd6b 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -87,7 +87,7 @@ steps: /p:Configuration=${{ parameters.buildConfig }} /p:TargetOS=${{ parameters.osGroup }} /p:MonoForceInterpreter=${{ parameters.interpreter }} - /p:TestScope=${{ parameters.testScope }} + /p:TestScope=innerloop /p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }} /p:HelixBuild=$(Build.BuildNumber) ${{ parameters.extraHelixArguments }} @@ -97,7 +97,7 @@ steps: continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }} env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops - _Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list + # _Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list ${{ if eq(variables['System.TeamProject'], 'internal') }}: HelixAccessToken: $(HelixApiAccessToken) From bdd2100dabd858a660b3c85bffdcdcb0fcded1d3 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 24 Jun 2023 15:04:18 +0200 Subject: [PATCH 28/72] Enable JustInterpreter AOT mode for tracing/eventpipe --- eng/pipelines/runtime.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 228b06dbfe3b47..28b5591001d53a 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1364,6 +1364,7 @@ extends: testGroup: innerloop nameSuffix: AllSubsets_Mono_RuntimeTests buildArgs: -s mono+libs -c $(_BuildConfig) + interpreter: true timeoutInMinutes: 240 # extra steps, run tests extraVariablesTemplates: From 69e1034eb79228ca0fdb903d3e5c03dabf24f7d7 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sun, 25 Jun 2023 13:42:03 +0200 Subject: [PATCH 29/72] Add _AOTMode and MonoForceInterpreter values to test the CI --- src/mono/msbuild/apple/build/AppleBuild.targets | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 91da473304e139..dbf762162573b4 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -117,8 +117,10 @@ Condition="'$(RunAOTCompilation)' == 'true'"> - <_AOTMode Condition="'$(UseMonoJustInterp)' != 'true'">Full - <_AOTMode Condition="'$(UseMonoJustInterp)' == 'true'">JustInterp + + + <_AOTMode>JustInterp + true From 97e472e111e68ad6af39036db837a6ffecb264f3 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sun, 25 Jun 2023 15:37:21 +0200 Subject: [PATCH 30/72] Don't use MainLibraryFileName property for the runtime tests --- src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index acf97d34225846..7409f595031c02 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -29,7 +29,7 @@ $(OriginalPublishDir) $(TestRootDir)AppBundle\ - $(OriginalPublishDir)AppleTestRunner.dll + $(OriginalPublishDir)AppleTestRunner.dll true From 6e91da50c17c9dbd8ee52f047bd34a2a6bf796eb Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 26 Jun 2023 15:24:45 +0200 Subject: [PATCH 31/72] Test xunit command --- eng/testing/tests.ioslike.targets | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index b46c1a93f4fd2b..addbe70503ab41 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -25,7 +25,8 @@ <_AfterBuildCommands> mv $XHARNESS_OUT/AOTBuild.binlog "$HELIX_WORKITEM_UPLOAD_ROOT" sign "$app" - xharness apple test --app "$app" --output-directory "$output_directory" --target "$target" --timeout "$timeout" --xcode "$xcode_path" -v --launch-timeout "$launch_timeout" $(_ResetSimulatorSwitch) $(_SignalAppEndSwitch) -- + dotnet $CORE_ROOT/xunit/xunit.console.dll tracing/eventpipe/tracing.eventpipe.XUnitWrapper.dll -parallel none -nocolor -noshadow -xml testResults.xml + $(_AOTBuildCommand) $(_AfterBuildCommands) From 89ed4c2dabe0e7cc8b498d351c51b647f91ae0c2 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 26 Jun 2023 17:53:51 +0200 Subject: [PATCH 32/72] Test MainLibraryFileName property to run the app --- eng/testing/tests.ioslike.targets | 4 ++-- src/tests/build.proj | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index addbe70503ab41..c18595882e60a7 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -25,8 +25,7 @@ <_AfterBuildCommands> mv $XHARNESS_OUT/AOTBuild.binlog "$HELIX_WORKITEM_UPLOAD_ROOT" sign "$app" - dotnet $CORE_ROOT/xunit/xunit.console.dll tracing/eventpipe/tracing.eventpipe.XUnitWrapper.dll -parallel none -nocolor -noshadow -xml testResults.xml - + xharness apple test --app "$app" --output-directory "$output_directory" --target "$target" --timeout "$timeout" --xcode "$xcode_path" -v --launch-timeout "$launch_timeout" $(_ResetSimulatorSwitch) $(_SignalAppEndSwitch) -- $(_AOTBuildCommand) $(_AfterBuildCommands) @@ -109,6 +108,7 @@ <_ApplePropertyNames Include="RuntimeTests" /> <_ApplePropertyNames Include="MonoForceInterpreter" /> <_ApplePropertyNames Include="UseMonoJustInterp" /> + <_ApplePropertyNames Include="MainLibraryFileName" /> <_ApplePropertiesToPass Include="$(%(_ApplePropertyNames.Identity))" diff --git a/src/tests/build.proj b/src/tests/build.proj index 439e3ce0f3ff47..b94483c1a74d9e 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -412,6 +412,7 @@ $(BuildDir)/ $(AssemblyName) $(CORE_ROOT) + testdir-processinfo2/processinfo2.dll From 05b1319b83268a75022c83f8d7e5ea91a16298e1 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 26 Jun 2023 18:47:42 +0200 Subject: [PATCH 33/72] Test MainLibraryFileName property to run the app --- src/tests/build.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/build.proj b/src/tests/build.proj index b94483c1a74d9e..65f33abfcbff60 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -412,7 +412,7 @@ $(BuildDir)/ $(AssemblyName) $(CORE_ROOT) - testdir-processinfo2/processinfo2.dll + processinfo2.dll From f0bed59f5efb2d215a93d72aefb1bbc419d55f9f Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 27 Jun 2023 16:37:00 +0200 Subject: [PATCH 34/72] Pass --set-env parameter to set the entry point for the bundle --- src/tests/build.proj | 48 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/tests/build.proj b/src/tests/build.proj index 65f33abfcbff60..4cb3ec274f7834 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -318,6 +318,9 @@ + + + @@ -412,11 +415,54 @@ $(BuildDir)/ $(AssemblyName) $(CORE_ROOT) - processinfo2.dll + + + + + + + + + + + + + + + + + + + + + + + + From 3ce2505aeec3f3e68834e1f44cad2e8796e67c19 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 27 Jun 2023 17:32:38 +0200 Subject: [PATCH 35/72] Remove MainLibraryFileName to test the CI --- src/mono/msbuild/apple/build/AppleBuild.targets | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index dbf762162573b4..bac3564d948d42 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -263,6 +263,10 @@ ItemName="_AssembliesToBundleInternalDedup"/> + + + + Date: Tue, 27 Jun 2023 19:30:06 +0200 Subject: [PATCH 36/72] Add test-specific AOT properties and ensure log test separation --- src/mono/msbuild/apple/build/AppleBuild.targets | 2 ++ src/tests/build.proj | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index bac3564d948d42..fb12e184bc6912 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -265,6 +265,8 @@ + diagnostics_tracing;marshal-ilgen + 127.0.0.1:9000,nosuspend,listen - + @@ -431,6 +431,7 @@ + @@ -451,6 +452,7 @@ string value = item.ItemSpec; string output = lastLine.Replace("--signal-app-end", $"--signal-app-end --set-env=MONO_APPLE_APP_ENTRY_POINT_LIB_NAME={value}"); resultBuilder.AppendLine(output); + resultBuilder.AppendLine("mv \"${output_directory}/net.dot."+AppName+".log\" \"${output_directory}/"+value.Replace('/','_')+".log\""); } StringBuilder outputScriptBuilder = new StringBuilder(string.Join("\n", lines.Take(lines.Length - 1))); From 8fcc3e1d173121cda0becc090817aa7284a69537 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 30 Jun 2023 16:55:41 +0200 Subject: [PATCH 37/72] Add test-specific props --- eng/testing/tests.ioslike.targets | 3 ++- src/mono/msbuild/apple/build/AppleBuild.targets | 2 -- src/tests/tracing/eventpipe/Directory.Build.targets | 8 ++++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index c18595882e60a7..6030624806cc19 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -109,6 +109,7 @@ <_ApplePropertyNames Include="MonoForceInterpreter" /> <_ApplePropertyNames Include="UseMonoJustInterp" /> <_ApplePropertyNames Include="MainLibraryFileName" /> + <_ApplePropertyNames Include="DiagnosticPorts" /> <_ApplePropertiesToPass Include="$(%(_ApplePropertyNames.Identity))" @@ -143,7 +144,7 @@ true - AppleTestRunner.dll + AppleTestRunner.dll $(PublishDir) $(BundleDir) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index fb12e184bc6912..659438a32333af 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -264,9 +264,7 @@ - diagnostics_tracing;marshal-ilgen - 127.0.0.1:9000,nosuspend,listen + + + diagnostics_tracing;marshal-ilgen + 127.0.0.1:9000,nosuspend,listen + true + true + - + From a708bf5a35c082b1070dcf05169e6329aa1f9ce6 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 11 Jul 2023 13:19:09 +0200 Subject: [PATCH 38/72] Expand test coverage --- eng/pipelines/runtime.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index a3e0e4584ce1db..582bb8b7b7d4cc 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1488,6 +1488,5 @@ extends: extraStepsParameters: creator: dotnet-bot # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: tree tracing/eventpipe testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true From db90487dfca027466ccc513453c3a4d4057954bf Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 11 Jul 2023 17:03:45 +0200 Subject: [PATCH 39/72] Ignore disabled tests --- src/tests/build.proj | 1 + src/tests/xunit-excludes.txt | 0 2 files changed, 1 insertion(+) create mode 100644 src/tests/xunit-excludes.txt diff --git a/src/tests/build.proj b/src/tests/build.proj index 4331483254b356..273f7e10712141 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -314,6 +314,7 @@ $([MSBuild]::NormalizeDirectory('$(BuildDir)', 'AppBundle')) + true diff --git a/src/tests/xunit-excludes.txt b/src/tests/xunit-excludes.txt new file mode 100644 index 00000000000000..e69de29bb2d1d6 From aadc66bc06b5677635796b6befacacc2a207ab5d Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 11 Jul 2023 21:05:05 +0200 Subject: [PATCH 40/72] Disable failing tests --- src/tests/issues.targets | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index dcf0616de702d1..d70f7944c18924 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2835,6 +2835,12 @@ https://github.com/dotnet/runtime/issues/86327 + + https://github.com/dotnet/runtime/issues/54399 + + + https://github.com/dotnet/runtime/issues/54399 + From e8cb16787b3f597f4af5bc53eb8d387bec4117ae Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 12 Jul 2023 18:37:27 +0200 Subject: [PATCH 41/72] Code cleanup --- eng/testing/tests.ioslike.targets | 6 +++--- src/mono/msbuild/apple/build/AppleBuild.targets | 9 +++------ .../msbuild/apple/data/ProxyProjectForAOTOnHelix.proj | 2 +- src/tests/Common/helixpublishwitharcade.proj | 6 ------ src/tests/Directory.Build.targets | 6 +++--- src/tests/build.proj | 3 --- src/tests/tracing/eventpipe/Directory.Build.targets | 5 ++--- src/tests/xunit-excludes.txt | 0 8 files changed, 12 insertions(+), 25 deletions(-) delete mode 100644 src/tests/xunit-excludes.txt diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 6030624806cc19..9cfbab1953920d 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -104,8 +104,8 @@ <_ApplePropertyNames Include="HybridGlobalization" /> <_ApplePropertyNames Include="AssemblyName" /> <_ApplePropertyNames Include="MonoEnableLLVM" /> - <_ApplePropertyNames Include="CoreRootPath" /> - <_ApplePropertyNames Include="RuntimeTests" /> + <_ApplePropertyNames Include="CustomMain" /> + <_ApplePropertyNames Include="UseRuntimeComponents" /> <_ApplePropertyNames Include="MonoForceInterpreter" /> <_ApplePropertyNames Include="UseMonoJustInterp" /> <_ApplePropertyNames Include="MainLibraryFileName" /> @@ -144,7 +144,7 @@ true - AppleTestRunner.dll + AppleTestRunner.dll $(PublishDir) $(BundleDir) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 659438a32333af..157508703719ff 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -117,10 +117,8 @@ Condition="'$(RunAOTCompilation)' == 'true'"> - - - <_AOTMode>JustInterp - true + <_AOTMode Condition="'$(UseMonoJustInterp)' != 'true'">Full + <_AOTMode Condition="'$(UseMonoJustInterp)' == 'true'">JustInterp @@ -218,7 +216,6 @@ - diagnostics_tracing;marshal-ilgen + diagnostics_tracing;marshal-ilgen $(OriginalPublishDir) $(TestRootDir)AppBundle\ - $(OriginalPublishDir)AppleTestRunner.dll + $(OriginalPublishDir)AppleTestRunner.dll true diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index 6f61d940479153..edc43366cd9e99 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -280,15 +280,9 @@ - - - - - - diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index 44984e36afcc5b..f9c1085f618f29 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -9,7 +9,7 @@ - + $(TargetOS).AnyCPU.$(Configuration) $(ArtifactsDir)helix/ $(TestArchiveRoot)tests/ @@ -22,11 +22,11 @@ BuildiOSApp BuildiOSApp GenerateRunScript - true + true - + $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle diff --git a/src/tests/build.proj b/src/tests/build.proj index 273f7e10712141..1df322b19eba4c 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -415,10 +415,7 @@ $(BuildDir)/ $(AssemblyName) - $(CORE_ROOT) - - diff --git a/src/tests/tracing/eventpipe/Directory.Build.targets b/src/tests/tracing/eventpipe/Directory.Build.targets index ad77f0396c41f6..5e4d9c5ab3ba0c 100644 --- a/src/tests/tracing/eventpipe/Directory.Build.targets +++ b/src/tests/tracing/eventpipe/Directory.Build.targets @@ -1,12 +1,11 @@ - - + diagnostics_tracing;marshal-ilgen 127.0.0.1:9000,nosuspend,listen true true - - + true diff --git a/src/tests/xunit-excludes.txt b/src/tests/xunit-excludes.txt deleted file mode 100644 index e69de29bb2d1d6..00000000000000 From 7678ecff7aa8119e5ce0d159691d6efd0b84abd4 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 12 Jul 2023 18:52:41 +0200 Subject: [PATCH 42/72] Add compileOnHelix parameter --- .../runtimes/build-runtime-tests-and-send-to-helix.yml | 3 ++- eng/pipelines/runtime.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index 4e57a1a37991f3..8f7461f0eaf20d 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -28,6 +28,7 @@ parameters: enableMicrobuild: '' gatherAssetManifests: false shouldContinueOnError: false + compileOnHelix: false steps: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml @@ -76,7 +77,7 @@ steps: # Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64) - - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), in(parameters.osGroup, 'ios', 'iossimulator', 'tvos', 'tvossimulator', 'maccatalyst')) }}: + - ${{ if eq(parameters.compileOnHelix, 'true') }}: # Send tests to Helix - script: $(_msbuildCommand) $(_warnAsErrorParamHelixOverride) -restore $(Build.SourcesDirectory)/src/libraries/sendtohelix.proj diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 582bb8b7b7d4cc..a0c83085dcc8d8 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1487,6 +1487,6 @@ extends: extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml extraStepsParameters: creator: dotnet-bot - # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 + compileOnHelix: true testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true From c27444d9722fd488c26073cdb2259c814199bdcf Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 12 Jul 2023 21:25:21 +0200 Subject: [PATCH 43/72] Pass interpreter parameter --- .../runtimes/build-runtime-tests-and-send-to-helix.yml | 1 + eng/pipelines/runtime.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index 8f7461f0eaf20d..ebc6ebc26d616b 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -29,6 +29,7 @@ parameters: gatherAssetManifests: false shouldContinueOnError: false compileOnHelix: false + interpreter: false steps: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index a0c83085dcc8d8..815aacb4ec8058 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1477,7 +1477,6 @@ extends: testGroup: innerloop nameSuffix: AllSubsets_Mono_RuntimeTests buildArgs: -s mono+libs -c $(_BuildConfig) - interpreter: true timeoutInMinutes: 240 # extra steps, run tests extraVariablesTemplates: @@ -1488,5 +1487,6 @@ extends: extraStepsParameters: creator: dotnet-bot compileOnHelix: true + interpreter: true testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true From 89aea0270bcf48cc2546c7d5913df5c9be67cd07 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 13 Jul 2023 08:20:22 +0200 Subject: [PATCH 44/72] Use interp when AOT compiling runtime tests --- src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index b6843e7c06ad87..8b2d81eea1c3ac 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -30,6 +30,7 @@ $(TestRootDir)AppBundle\ $(OriginalPublishDir)AppleTestRunner.dll + true true From 39c7b0148ee3c96ff56388ba76794a17f90ef3ab Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 13 Jul 2023 10:16:00 +0200 Subject: [PATCH 45/72] Use interp when AOT compiling runtime tests --- src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index 8b2d81eea1c3ac..261186b388a0c7 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -30,6 +30,7 @@ $(TestRootDir)AppBundle\ $(OriginalPublishDir)AppleTestRunner.dll + true true true From 82e2d00b491dfc3bf4a93a88fd79d5dd732a79c1 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 13 Jul 2023 12:45:05 +0200 Subject: [PATCH 46/72] Remove RuntimeComponents and DiagnosticPorts from the Helix payload --- src/tests/build.proj | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/tests/build.proj b/src/tests/build.proj index 1df322b19eba4c..1a53d0dcaf50d9 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -276,8 +276,6 @@ $(CMDDIR_GrandParent)/$(CategoryWithSlash)/$(XUnitWrapperFileName) $(IntermediateOutputPath)\iOSApps\$(Category) $(XUnitTestBinBase)$(CategoryWithSlash)\$(Category).app - diagnostics_tracing;marshal-ilgen - 127.0.0.1:9000,nosuspend,listen True From 705bfa2f17c08aafc1133fc7e2870f4153556ab6 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 13 Jul 2023 16:15:36 +0200 Subject: [PATCH 47/72] Remove assembly filtering --- .../msbuild/apple/build/AppleBuild.targets | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 157508703719ff..7f3dd0a14aed85 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -206,17 +206,10 @@ - - - - - - - - - diagnostics_tracing;marshal-ilgen @@ -267,7 +252,7 @@ Date: Fri, 14 Jul 2023 11:38:49 +0200 Subject: [PATCH 48/72] Use libraries/helix.yml template for AOT on Helix --- .../build-runtime-tests-and-send-to-helix.yml | 44 ++++++------------- 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index ebc6ebc26d616b..ffa45f384b931d 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -76,37 +76,21 @@ steps: env: __MonoToolPrefix: aarch64-linux-gnu- - - # Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64) + # Checks the value of the compileOnHelix parameter + # and if set invokes libraries pipeline for AOT on Helix - ${{ if eq(parameters.compileOnHelix, 'true') }}: - # Send tests to Helix - - script: $(_msbuildCommand) $(_warnAsErrorParamHelixOverride) -restore - $(Build.SourcesDirectory)/src/libraries/sendtohelix.proj - /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} - /p:TargetArchitecture=${{ parameters.archType }} - /p:TargetRuntimeIdentifier=${{ parameters.targetRid }} - /p:Configuration=${{ parameters.buildConfig }} - /p:TargetOS=${{ parameters.osGroup }} - /p:MonoForceInterpreter=${{ parameters.interpreter }} - /p:TestScope=innerloop - /p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }} - /p:HelixBuild=$(Build.BuildNumber) - ${{ parameters.extraHelixArguments }} - /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog - displayName: Send to Helix - condition: and(succeeded(), ${{ parameters.condition }}) - continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }} - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops - # _Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - HelixAccessToken: $(HelixApiAccessToken) - HelixTargetQueues: ${{ replace(lower(join('+', parameters.helixQueues)), '.open', '') }} - Creator: '' - ${{ if eq(variables['System.TeamProject'], 'public') }}: - HelixTargetQueues: ${{ join('+', parameters.helixQueues) }} - Creator: ${{ parameters.creator }} + - template: /eng/pipelines/libraries/helix.yml + parameters: + osGroup: ${{ parameters.osGroup }} + runtimeFlavor: ${{ parameters.runtimeFlavor }} + archType: ${{ parameters.archType }} + targetRid: ${{ parameters.targetRid }} + buildConfig: ${{ parameters.buildConfig }} + interpreter: ${{ parameters.interpreter }} + testRunNamePrefixSuffix: ${{ parameters.testRunNamePrefixSuffix }} + extraHelixArguments: ${{ parameters.extraHelixArguments }} + helixQueues: ${{ parameters.helixQueues }} + creator: ${{ parameters.creator }} - ${{ else }}: - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml parameters: From ca10c8b46f370793939eef95063bb3ebb4768381 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 14 Jul 2023 15:24:22 +0200 Subject: [PATCH 49/72] Refactor the pipeline to remove redundant props --- eng/pipelines/global-build.yml | 262 +- eng/pipelines/runtime-linker-tests.yml | 132 +- eng/pipelines/runtime.yml | 2789 +++++++++-------- eng/testing/tests.ioslike.targets | 26 +- eng/testing/tests.targets | 4 +- .../msbuild/apple/build/AppleBuild.targets | 7 - .../apple/data/ProxyProjectForAOTOnHelix.proj | 7 +- src/tests/Directory.Build.targets | 8 +- src/tests/build.proj | 109 +- src/tests/issues.targets | 6 + .../tracing/eventpipe/Directory.Build.targets | 7 - 11 files changed, 1639 insertions(+), 1718 deletions(-) diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml index 831b7e0871b7c5..6f80e6ad104525 100644 --- a/eng/pipelines/global-build.yml +++ b/eng/pipelines/global-build.yml @@ -40,140 +40,140 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # # - # # Build with Release config and Debug runtimeConfiguration - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - windows_x86 - # - osx_x64 - # - osx_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: Runtime_Debug - # buildArgs: -c release -runtimeConfiguration debug - # timeoutInMinutes: 120 - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build with Release config and Debug runtimeConfiguration + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - windows_x86 + - osx_x64 + - osx_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: Runtime_Debug + buildArgs: -c release -runtimeConfiguration debug + timeoutInMinutes: 120 + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) - # # - # # Build with Release config and runtimeConfiguration with MSBuild generator - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - windows_x86 - # jobParameters: - # testGroup: innerloop - # nameSuffix: MSBuild_CMake - # buildArgs: -c Release -msbuild - # timeoutInMinutes: 120 - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build with Release config and runtimeConfiguration with MSBuild generator + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - windows_x86 + jobParameters: + testGroup: innerloop + nameSuffix: MSBuild_CMake + buildArgs: -c Release -msbuild + timeoutInMinutes: 120 + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) - # # - # # Build with Debug config and Release runtimeConfiguration - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: debug - # platforms: - # - linux_x64_dev_innerloop - # jobParameters: - # testGroup: innerloop - # nameSuffix: Runtime_Release - # buildArgs: -c debug -runtimeConfiguration release - # timeoutInMinutes: 120 - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build with Debug config and Release runtimeConfiguration + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: debug + platforms: + - linux_x64_dev_innerloop + jobParameters: + testGroup: innerloop + nameSuffix: Runtime_Release + buildArgs: -c debug -runtimeConfiguration release + timeoutInMinutes: 120 + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) - # # - # # Build with RuntimeFlavor only. This exercise code paths where only RuntimeFlavor is - # # specified. Catches cases where we depend on Configuration also being specified - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: debug - # platforms: - # - linux_x64_dev_innerloop - # jobParameters: - # testGroup: innerloop - # nameSuffix: RuntimeFlavor_Mono - # buildArgs: /p:RuntimeFlavor=Mono - # timeoutInMinutes: 120 - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build with RuntimeFlavor only. This exercise code paths where only RuntimeFlavor is + # specified. Catches cases where we depend on Configuration also being specified + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: debug + platforms: + - linux_x64_dev_innerloop + jobParameters: + testGroup: innerloop + nameSuffix: RuntimeFlavor_Mono + buildArgs: /p:RuntimeFlavor=Mono + timeoutInMinutes: 120 + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) - # # - # # Build Mono + Libraries. This exercises the code path where we build libraries without - # # first building CoreCLR - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: debug - # platforms: - # - windows_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: Mono_Libraries - # buildArgs: -subset mono+libs /p:RuntimeFlavor=Mono - # timeoutInMinutes: 120 - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build Mono + Libraries. This exercises the code path where we build libraries without + # first building CoreCLR + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: debug + platforms: + - windows_x64 + jobParameters: + testGroup: innerloop + nameSuffix: Mono_Libraries + buildArgs: -subset mono+libs /p:RuntimeFlavor=Mono + timeoutInMinutes: 120 + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) - # # - # # Build Libraries AllConfigurations. This exercises the code path where we build libraries for all - # # configurations on a non Windows operating system. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: debug - # platforms: - # - linux_x64_dev_innerloop - # jobParameters: - # nameSuffix: Libraries_AllConfigurations - # buildArgs: -subset libs -allconfigurations - # timeoutInMinutes: 120 - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build Libraries AllConfigurations. This exercises the code path where we build libraries for all + # configurations on a non Windows operating system. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: debug + platforms: + - linux_x64_dev_innerloop + jobParameters: + nameSuffix: Libraries_AllConfigurations + buildArgs: -subset libs -allconfigurations + timeoutInMinutes: 120 + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) - # # - # # SourceBuild Build - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # platforms: - # - SourceBuild_linux_x64 - # jobParameters: - # nameSuffix: PortableSourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true) + # + # SourceBuild Build + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + platforms: + - SourceBuild_linux_x64 + jobParameters: + nameSuffix: PortableSourceBuild + extraStepsParameters: + name: SourceBuildPackages + timeoutInMinutes: 95 + condition: + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true) diff --git a/eng/pipelines/runtime-linker-tests.yml b/eng/pipelines/runtime-linker-tests.yml index ad7a6df8a7f58b..314249cd181f4a 100644 --- a/eng/pipelines/runtime-linker-tests.yml +++ b/eng/pipelines/runtime-linker-tests.yml @@ -61,71 +61,71 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml - # # - # # Build and Test ILLink in Release config vertical for Windows, Linux and OSX - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - windows_x64 - # - osx_x64 - # - linux_x64 - # jobParameters: - # testGroup: innerloop - # testResultsFormat: 'vstest' - # timeoutInMinutes: 120 - # nameSuffix: ILLink_Runtime_Testing - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # buildArgs: -s tools.illinktests -test -c $(_BuildConfig) + # + # Build and Test ILLink in Release config vertical for Windows, Linux and OSX + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - windows_x64 + - osx_x64 + - linux_x64 + jobParameters: + testGroup: innerloop + testResultsFormat: 'vstest' + timeoutInMinutes: 120 + nameSuffix: ILLink_Runtime_Testing + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + eq(variables['isRollingBuild'], true)) + buildArgs: -s tools.illinktests -test -c $(_BuildConfig) - # # - # # Build Release config vertical for Windows, Linux, and OSX - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - windows_x64 - # - osx_x64 - # - linux_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: Runtime_Release - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # buildArgs: -s clr+libs -c $(_BuildConfig) - # extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml + # + # Build Release config vertical for Windows, Linux, and OSX + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - windows_x64 + - osx_x64 + - linux_x64 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: Runtime_Release + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + buildArgs: -s clr+libs -c $(_BuildConfig) + extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml - # # - # # Build Release config vertical for Browser-wasm - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - browser_wasm - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: Runtime_Release - # buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false -p:AotHostArchitecture=x64 -p:AotHostOS=$(_hostedOS) - # condition: - # or( - # eq(variables['isRollingBuild'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true)) - # extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml - # extraStepsParameters: - # extraTestArgs: '/p:WasmBuildNative=false' + # + # Build Release config vertical for Browser-wasm + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - browser_wasm + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: Runtime_Release + buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false -p:AotHostArchitecture=x64 -p:AotHostOS=$(_hostedOS) + condition: + or( + eq(variables['isRollingBuild'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true)) + extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml + extraStepsParameters: + extraTestArgs: '/p:WasmBuildNative=false' diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 815aacb4ec8058..028e931d185276 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -61,1399 +61,520 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml -# # -# # Build CoreCLR checked -# # Only when CoreCLR is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml -# buildConfig: checked -# platforms: -# - linux_x86 -# - linux_x64 -# - linux_arm -# - linux_arm64 -# - linux_riscv64 -# - linux_musl_arm -# - linux_musl_arm64 -# - linux_musl_x64 -# - osx_arm64 -# - tizen_armel -# - windows_x86 -# - windows_x64 -# - windows_arm64 -# jobParameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build the whole product using GNU compiler toolchain -# # When CoreCLR, Mono, Libraries, Installer and src/tests are changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: checked -# platforms: -# - gcc_linux_x64 -# jobParameters: -# testGroup: innerloop -# nameSuffix: Native_GCC -# buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc -# extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml -# extraStepsParameters: -# testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build CoreCLR osx_x64 checked -# # Only when CoreCLR or Libraries is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml -# buildConfig: checked -# platforms: -# - osx_x64 -# jobParameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build CoreCLR release -# # Always as they are needed by Installer and we always build and test the Installer. -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml -# buildConfig: release -# platforms: -# - osx_arm64 -# - osx_x64 -# - linux_x64 -# - linux_arm -# - linux_arm64 -# - linux_musl_x64 -# - linux_musl_arm -# - linux_musl_arm64 -# - windows_x64 -# - windows_x86 -# - windows_arm64 -# - freebsd_x64 -# jobParameters: -# testGroup: innerloop -# # Mono/runtimetests also need this, but skip for wasm -# condition: -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build CoreCLR Formatting Job -# # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; -# # both Rolling and PR builds). -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml -# platforms: -# - linux_x64 -# - windows_x64 -# jobParameters: -# condition: >- -# and( -# or( -# eq(variables['Build.SourceBranchName'], 'main'), -# eq(variables['System.PullRequest.TargetBranch'], 'main')), -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), -# eq(variables['isRollingBuild'], true))) - -# # -# # CoreCLR NativeAOT debug build and smoke tests -# # Only when CoreCLR is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# buildConfig: Debug -# platforms: -# - linux_x64 -# - windows_x64 -# variables: -# - name: timeoutPerTestInMinutes -# value: 60 -# - name: timeoutPerTestCollectionInMinutes -# value: 180 -# jobParameters: -# timeoutInMinutes: 120 -# nameSuffix: NativeAOT -# buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release -# extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml -# extraStepsParameters: -# creator: dotnet-bot -# testBuildArgs: nativeaot tree nativeaot -# liveLibrariesBuildConfig: Release -# testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) -# extraVariablesTemplates: -# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml -# parameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isFullMatrix'], true)) - -# # -# # CoreCLR NativeAOT checked build and smoke tests -# # Only when CoreCLR is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# buildConfig: Checked -# platforms: -# - windows_x64 -# variables: -# - name: timeoutPerTestInMinutes -# value: 60 -# - name: timeoutPerTestCollectionInMinutes -# value: 180 -# jobParameters: -# timeoutInMinutes: 120 -# nameSuffix: NativeAOT -# buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release -# extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml -# extraStepsParameters: -# creator: dotnet-bot -# testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/diagnosticport;tracing/eventpipe/reverse;tracing/eventpipe/processenvironment;tracing/eventpipe/simpleruntimeeventvalidation;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' -# liveLibrariesBuildConfig: Release -# testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) -# extraVariablesTemplates: -# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml -# parameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isFullMatrix'], true)) - -# # -# # CoreCLR NativeAOT release build and smoke tests -# # Only when CoreCLR is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# buildConfig: Release -# platforms: -# - linux_x64 -# - windows_x64 -# - osx_x64 -# - linux_arm64 -# - windows_arm64 -# - osx_arm64 -# variables: -# - name: timeoutPerTestInMinutes -# value: 60 -# - name: timeoutPerTestCollectionInMinutes -# value: 180 -# jobParameters: -# testGroup: innerloop -# timeoutInMinutes: 120 -# nameSuffix: NativeAOT -# buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release -# extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml -# extraStepsParameters: -# creator: dotnet-bot -# testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/providervalidation;"' -# liveLibrariesBuildConfig: Release -# testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) -# extraVariablesTemplates: -# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml -# parameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isFullMatrix'], true)) - -# # -# # CoreCLR NativeAOT release build and libraries tests -# # Only when CoreCLR or library is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# buildConfig: Release -# platforms: -# - windows_arm64 -# - linux_arm64 -# - osx_arm64 -# jobParameters: -# testGroup: innerloop -# isSingleFile: true -# nameSuffix: NativeAOT_Libraries -# buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true -# timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours -# # extra steps, run tests -# extraStepsTemplate: /eng/pipelines/libraries/helix.yml -# extraStepsParameters: -# creator: dotnet-bot -# testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(variables['isFullMatrix'], true)) - -# # Build and test clr tools -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: checked -# platforms: -# - linux_x64 -# jobParameters: -# timeoutInMinutes: 120 -# nameSuffix: CLR_Tools_Tests -# buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test -# enablePublishTestResults: true -# testResultsFormat: 'xunit' -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # Build Mono AOT offset headers once, for consumption elsewhere -# # Only when mono changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml -# buildConfig: release -# platforms: -# - android_x64 -# - browser_wasm -# - tvos_arm64 -# - ios_arm64 -# - maccatalyst_x64 -# jobParameters: -# isOfficialBuild: ${{ variables.isOfficialBuild }} -# # needed by crossaot -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # Build the whole product using Mono runtime -# # Only when libraries, mono or installer are changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# runtimeFlavor: mono -# platforms: -# - tvossimulator_x64 -# - linux_arm -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono -# buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - linux_musl_x64 -# - linux_riscv64 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono -# buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # WebAssembly legs -# # -# - template: /eng/pipelines/common/templates/wasm-library-tests.yml -# parameters: -# platforms: -# - browser_wasm -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) -# scenarios: -# - normal -# - WasmTestOnBrowser - -# - template: /eng/pipelines/common/templates/wasm-library-tests.yml -# parameters: -# platforms: -# - browser_wasm_win -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) -# scenarios: -# - WasmTestOnBrowser - -# # EAT Library tests - only run on linux -# - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml -# parameters: -# platforms: -# - browser_wasm -# nameSuffix: _EAT -# runAOT: false -# shouldRunSmokeOnly: false -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - -# # AOT Library tests -# - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml -# parameters: -# platforms: -# - browser_wasm -# nameSuffix: _AOT -# runAOT: true -# shouldRunSmokeOnly: true -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - -# - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml -# parameters: -# platforms: -# - browser_wasm_win -# nameSuffix: _AOT -# runAOT: true -# shouldRunSmokeOnly: true -# alwaysRun: ${{ variables.isRollingBuild }} - -# # Wasm.Build.Tests -# - template: /eng/pipelines/common/templates/wasm-build-tests.yml -# parameters: -# platforms: -# - browser_wasm -# - browser_wasm_win -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - -# # Wasm Debugger tests -# - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml -# parameters: -# platforms: -# - browser_wasm -# - browser_wasm_win -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - -# # Wasm runtime tests -# - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml -# parameters: -# platforms: -# - browser_wasm -# alwaysRun: ${{ variables.isRollingBuild }} -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - -# # Build and Smoke Tests only - Wasm Threading Legs -# - template: /eng/pipelines/common/templates/wasm-library-tests.yml -# parameters: -# platforms: -# - browser_wasm -# nameSuffix: _Threading_Smoke -# extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) -# shouldRunSmokeOnly: true -# alwaysRun: ${{ variables.isRollingBuild }} -# scenarios: -# - WasmTestOnBrowser - -# # WASI/WASM - -# - template: /eng/pipelines/common/templates/wasm-library-tests.yml -# parameters: -# platforms: -# - wasi_wasm -# - wasi_wasm_win -# nameSuffix: '_Smoke' -# extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) -# shouldContinueOnError: true -# shouldRunSmokeOnly: true -# alwaysRun: ${{ variables.isRollingBuild }} -# scenarios: -# - normal - -# - template: /eng/pipelines/common/templates/wasm-build-tests.yml -# parameters: -# platforms: -# - wasi_wasm -# - wasi_wasm_win -# extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) -# alwaysRun: ${{ variables.isRollingBuild }} - -# # -# # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size -# # Build the whole product using Mono and run libraries tests -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - ios_arm64 -# - tvos_arm64 -# variables: -# # map dependencies variables to local variables -# - name: librariesContainsChange -# value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] -# - name: monoContainsChange -# value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono -# buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true -# timeoutInMinutes: 180 -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) -# # extra steps, run tests -# extraStepsTemplate: /eng/pipelines/libraries/helix.yml -# extraStepsParameters: -# creator: dotnet-bot -# testRunNamePrefixSuffix: Mono_$(_BuildConfig) -# extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true -# condition: >- -# or( -# eq(variables['librariesContainsChange'], true), -# eq(variables['monoContainsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # MacCatalyst interp - requires AOT Compilation and Interp flags -# # Build the whole product using Mono and run libraries tests -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - maccatalyst_x64 -# - ${{ if eq(variables['isRollingBuild'], true) }}: -# - maccatalyst_arm64 -# variables: -# # map dependencies variables to local variables -# - name: librariesContainsChange -# value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] -# - name: monoContainsChange -# value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono -# buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true -# timeoutInMinutes: 180 -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) -# # extra steps, run tests -# extraStepsTemplate: /eng/pipelines/libraries/helix.yml -# extraStepsParameters: -# creator: dotnet-bot -# testRunNamePrefixSuffix: Mono_$(_BuildConfig) -# condition: >- -# or( -# eq(variables['librariesContainsChange'], true), -# eq(variables['monoContainsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono and Installer on LLVMJIT mode -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - osx_x64 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_LLVMJIT -# buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -# /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# runtimeFlavor: mono -# platforms: -# - linux_x64 -# - linux_arm64 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_LLVMJIT -# buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -# /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono and Installer on LLVMAOT mode -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - linux_x64 -# - linux_arm64 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_LLVMAOT -# buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -# /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# runtimeFlavor: mono -# platforms: -# - osx_x64 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_LLVMAOT -# buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -# /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono debug -# # Only when mono changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: debug -# platforms: -# - osx_x64 -# - osx_arm64 -# - linux_x64 -# - linux_arm64 -# # - linux_musl_arm64 -# - windows_x64 -# - windows_x86 -# # - windows_arm64 -# jobParameters: -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono release AOT cross-compilers -# # Only when mono changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: release -# platforms: -# - linux_x64 -# - linux_musl_x64 -# # - linux_arm64 -# # - linux_musl_arm64 -# - windows_x64 -# # - windows_x86 -# # - windows_arm64 -# jobParameters: -# runtimeVariant: crossaot -# dependsOn: -# - mono_android_offsets -# - mono_browser_offsets -# monoCrossAOTTargetOS: -# - android -# - browser -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: release -# platforms: -# - osx_x64 -# jobParameters: -# runtimeVariant: crossaot -# dependsOn: -# - mono_android_offsets -# - mono_browser_offsets -# - mono_tvos_offsets -# - mono_ios_offsets -# - mono_maccatalyst_offsets -# monoCrossAOTTargetOS: -# - android -# - browser -# - tvos -# - ios -# - maccatalyst -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: release -# platforms: -# - linux_arm64 -# - linux_musl_arm64 -# - osx_arm64 -# jobParameters: -# runtimeVariant: crossaot -# dependsOn: -# - mono_browser_offsets -# monoCrossAOTTargetOS: -# - browser -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono release -# # Only when libraries or mono changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: release -# platforms: -# - linux_x64 -# # - linux_musl_arm64 -# - windows_x64 -# - windows_x86 -# # - windows_arm64 -# jobParameters: -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono release -# # Only when libraries, mono, or the runtime tests changed -# # Currently only these architectures are needed for the runtime tests. -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: release -# platforms: -# - osx_x64 -# - linux_arm64 -# jobParameters: -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build Mono release with LLVM AOT -# # Only when mono, or the runtime tests changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/mono/templates/build-job.yml -# runtimeFlavor: mono -# buildConfig: release -# platforms: -# - linux_x64 -# - linux_arm64 -# jobParameters: -# runtimeVariant: llvmaot -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build libraries using live CoreLib -# # These set of libraries are built always no matter what changed -# # The reason for that is because Corelib and Installer needs it and -# # These are part of the test matrix for Libraries changes. -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/build-job.yml -# buildConfig: Release -# platforms: -# - linux_arm -# - linux_musl_arm -# - linux_musl_arm64 -# - windows_arm64 -# - windows_x86 -# jobParameters: -# condition: -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/build-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# - linux_arm64 -# - linux_musl_x64 -# - linux_x64 -# - osx_arm64 -# - osx_x64 -# - windows_x64 -# - freebsd_x64 -# jobParameters: -# testScope: innerloop -# condition: -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Libraries debug build that only runs when coreclr is changed -# # Only do this on PR builds since we use the Release builds for these test runs in CI -# # and those are already built above -# # -# - ${{ if eq(variables['isRollingBuild'], false) }}: -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/build-job.yml -# buildConfig: Debug -# platforms: -# - windows_x86 -# jobParameters: -# condition: >- -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - -# # -# # Libraries release build that only runs when coreclr is changed in PRs -# # We need these for checked coreclr + release libraries tests runs. -# # -# - ${{ if eq(variables['isRollingBuild'], false) }}: -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/build-job.yml -# buildConfig: Release -# platforms: -# - linux_x64 -# - windows_x64 -# jobParameters: -# condition: >- -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/build-job.yml -# buildConfig: Release -# platforms: -# - windows_x86 -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# jobParameters: -# framework: net48 -# runTests: true -# testScope: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/build-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# - windows_x64 -# jobParameters: -# framework: allConfigurations -# runTests: true -# useHelix: false -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Installer Build and Test -# # These are always built since they only take like 15 minutes -# # we expect these to be done before we finish libraries or coreclr testing. -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/installer/jobs/build-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# - linux_musl_arm -# - linux_musl_arm64 -# - windows_x86 -# - windows_arm64 -# - linux_arm -# jobParameters: -# liveRuntimeBuildConfig: release -# liveLibrariesBuildConfig: Release -# runOnlyIfDependenciesSucceeded: true -# condition: -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/installer/jobs/build-job.yml -# buildConfig: Release -# platforms: -# - osx_arm64 -# - osx_x64 -# - linux_x64 -# - linux_arm64 -# - linux_musl_x64 -# - windows_x64 -# - freebsd_x64 -# jobParameters: -# liveRuntimeBuildConfig: release -# liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# runOnlyIfDependenciesSucceeded: true -# condition: -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # CoreCLR Test builds using live libraries release build -# # Only when CoreCLR is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml -# buildConfig: checked -# platforms: -# - CoreClrTestBuildHost # Either osx_x64 or linux_x64 -# jobParameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # CoreCLR Test executions using live libraries -# # Only when CoreCLR is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml -# buildConfig: checked -# platforms: -# - linux_arm -# - windows_x86 -# - windows_arm64 -# helixQueueGroup: pr -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# jobParameters: -# testGroup: innerloop -# liveLibrariesBuildConfig: Release -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml -# buildConfig: checked -# platforms: -# - osx_x64 -# - linux_x64 -# - linux_arm64 -# - windows_x64 -# helixQueueGroup: pr -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# jobParameters: -# testGroup: innerloop -# liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml -# buildConfig: checked -# platforms: -# - osx_arm64 -# helixQueueGroup: pr -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# jobParameters: -# testGroup: innerloop -# liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Mono Test builds with CoreCLR runtime tests using live libraries debug build -# # Only when Mono is changed -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml -# buildConfig: release -# runtimeFlavor: mono -# platforms: -# - CoreClrTestBuildHost # Either osx_x64 or linux_x64 -# jobParameters: -# testGroup: innerloop -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml -# buildConfig: release -# runtimeFlavor: mono -# platforms: -# - windows_x64 -# helixQueueGroup: pr -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# jobParameters: -# testGroup: innerloop -# liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# liveRuntimeBuildConfig: release -# runtimeVariant: minijit -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Build the whole product using Mono and run runtime tests -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - osx_x64 -# - linux_arm64 -# variables: -# - name: timeoutPerTestInMinutes -# value: 60 -# - name: timeoutPerTestCollectionInMinutes -# value: 180 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests -# runtimeVariant: minijit -# buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release -# timeoutInMinutes: 180 -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml -# extraStepsParameters: -# creator: dotnet-bot -# testRunNamePrefixSuffix: Mono_Release -# extraVariablesTemplates: -# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - -# # -# # Mono CoreCLR runtime Test executions using live libraries in interpreter mode -# # Only when Mono is changed - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - osx_x64 -# variables: -# - name: timeoutPerTestInMinutes -# value: 60 -# - name: timeoutPerTestCollectionInMinutes -# value: 180 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests -# runtimeVariant: monointerpreter -# buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release -# timeoutInMinutes: 180 -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) -# extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml -# extraStepsParameters: -# creator: dotnet-bot -# testRunNamePrefixSuffix: Mono_Release -# extraVariablesTemplates: -# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml -# # -# # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT -# # Only when Mono is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# buildConfig: Release -# runtimeFlavor: mono -# platforms: -# - linux_x64 -# # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation -# #- linux_arm64 -# variables: -# - name: timeoutPerTestInMinutes -# value: 60 -# - name: timeoutPerTestCollectionInMinutes -# value: 180 -# jobParameters: -# testGroup: innerloop -# nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests -# runtimeVariant: llvmaot -# buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true -# timeoutInMinutes: 180 - -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), -# eq(variables['isRollingBuild'], true)) -# extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml -# extraStepsParameters: -# creator: dotnet-bot -# llvmAotStepContainer: linux_x64_llvmaot -# testRunNamePrefixSuffix: Mono_Release -# extraVariablesTemplates: -# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - -# # -# # Libraries Release Test Execution against a release mono runtime. -# # Only when libraries or mono changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# runtimeFlavor: mono -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# # - windows_x64 -# - osx_x64 -# - linux_arm64 -# - linux_x64 -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# jobParameters: -# isOfficialBuild: false -# runtimeDisplayName: mono -# testScope: innerloop -# liveRuntimeBuildConfig: release -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Libraries Release Test Execution against a release mono interpreter runtime. -# # Only when libraries or mono changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# runtimeFlavor: mono -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# # - windows_x64 -# #- osx_x64 -# - linux_x64 -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# jobParameters: -# isOfficialBuild: false -# interpreter: true -# runtimeDisplayName: mono_interpreter -# testScope: innerloop -# liveRuntimeBuildConfig: release -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Libraries Release Test Execution against a release coreclr runtime -# # Only when the PR contains a libraries change -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# buildConfig: Release -# platforms: -# - windows_x86 -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# jobParameters: -# isOfficialBuild: false -# testScope: innerloop -# liveRuntimeBuildConfig: release -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Libraries Debug Test Execution against a release coreclr runtime -# # Only when the PR contains a libraries change -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# - windows_x64 -# - osx_x64 -# - linux_x64 -# - linux_musl_x64 -# helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml -# jobParameters: -# isOfficialBuild: false -# testScope: innerloop -# liveRuntimeBuildConfig: release -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # The next three jobs run checked coreclr + libraries tests. -# # The matrix looks like the following, where the right columns specify which configurations -# # the libraries tests are built in. -# # ________________________________________ -# # | Platform | PR | Rolling | -# # | ---------------- | ------- | ------- | -# # | linux-arm64 | Debug | Release | -# # | windows-x86 | Debug | Release | -# # | linux-musl-x64 | Debug | Release | -# # | OSX-x64 | Debug | Release | -# # | linux-musl-arm | Release | Release | -# # | linux-musl-arm64 | Release | Release | -# # | linux-x64 | Release | Release | -# # | windows-x64 | Release | Release | - -# # -# # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime -# # Only when the PR contains a coreclr change -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# - linux_arm64 -# - windows_x86 -# - linux_musl_x64 -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# helixQueueGroup: libraries -# jobParameters: -# testScope: innerloop -# liveRuntimeBuildConfig: checked -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Release Libraries Test Execution against a checked runtime -# # Only if CoreCLR or Libraries is changed -# # -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# buildConfig: Release -# platforms: -# - linux_musl_arm -# - linux_musl_arm64 -# - linux_x64 -# - windows_x64 -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# helixQueueGroup: libraries -# jobParameters: -# testScope: innerloop -# liveRuntimeBuildConfig: checked -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/libraries/run-test-job.yml -# buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} -# platforms: -# - osx_x64 -# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml -# helixQueueGroup: libraries -# jobParameters: -# testScope: innerloop -# liveRuntimeBuildConfig: checked -# condition: >- -# or( -# eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), -# eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), -# eq(variables['isRollingBuild'], true)) - -# # -# # Sourcebuild legs -# # We have 3 important legs for source-build: -# # - Centos.8 (ensures that known non-portable RID is working) -# # - Linux-x64 portable (used for dependency flow and downstream PR verification) -# # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. -# # -# # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.8 in rolling CI, -# # Run Linux-x64 in PR. - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: Release -# helixQueueGroup: pr -# platforms: -# - SourceBuild_centos8_x64 -# jobParameters: -# nameSuffix: centos8SourceBuild -# extraStepsParameters: -# name: SourceBuildPackages -# timeoutInMinutes: 95 -# condition: eq(variables['isRollingBuild'], true) - -# - template: /eng/pipelines/common/platform-matrix.yml -# parameters: -# jobTemplate: /eng/pipelines/common/global-build-job.yml -# buildConfig: Release -# helixQueueGroup: pr -# platforms: -# - SourceBuild_banana24_x64 -# jobParameters: -# nameSuffix: banana24SourceBuild -# extraStepsParameters: -# name: SourceBuildPackages -# timeoutInMinutes: 95 -# condition: eq(variables['isRollingBuild'], true) + # + # Build CoreCLR checked + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - linux_x86 + - linux_x64 + - linux_arm + - linux_arm64 + - linux_riscv64 + - linux_musl_arm + - linux_musl_arm64 + - linux_musl_x64 + - osx_arm64 + - tizen_armel + - windows_x86 + - windows_x64 + - windows_arm64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build the whole product using GNU compiler toolchain + # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: checked + platforms: + - gcc_linux_x64 + jobParameters: + testGroup: innerloop + nameSuffix: Native_GCC + buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + extraStepsParameters: + testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR osx_x64 checked + # Only when CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - osx_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR release + # Always as they are needed by Installer and we always build and test the Installer. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: release + platforms: + - osx_arm64 + - osx_x64 + - linux_x64 + - linux_arm + - linux_arm64 + - linux_musl_x64 + - linux_musl_arm + - linux_musl_arm64 + - windows_x64 + - windows_x86 + - windows_arm64 + - freebsd_x64 + jobParameters: + testGroup: innerloop + # Mono/runtimetests also need this, but skip for wasm + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR Formatting Job + # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # both Rolling and PR builds). + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + platforms: + - linux_x64 + - windows_x64 + jobParameters: + condition: >- + and( + or( + eq(variables['Build.SourceBranchName'], 'main'), + eq(variables['System.PullRequest.TargetBranch'], 'main')), + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + eq(variables['isRollingBuild'], true))) + + # + # CoreCLR NativeAOT debug build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Debug + platforms: + - linux_x64 + - windows_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + extraStepsParameters: + creator: dotnet-bot + testBuildArgs: nativeaot tree nativeaot + liveLibrariesBuildConfig: Release + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # + # CoreCLR NativeAOT checked build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Checked + platforms: + - windows_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + extraStepsParameters: + creator: dotnet-bot + testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;tracing/eventpipe/config;tracing/eventpipe/diagnosticport;tracing/eventpipe/reverse;tracing/eventpipe/processenvironment;tracing/eventpipe/simpleruntimeeventvalidation;" test tracing/eventcounter/runtimecounters.csproj /p:BuildNativeAotFrameworkObjects=true' + liveLibrariesBuildConfig: Release + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # + # CoreCLR NativeAOT release build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + platforms: + - linux_x64 + - windows_x64 + - osx_x64 + - linux_arm64 + - windows_arm64 + - osx_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + extraStepsParameters: + creator: dotnet-bot + testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/providervalidation;"' + liveLibrariesBuildConfig: Release + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # + # CoreCLR NativeAOT release build and libraries tests + # Only when CoreCLR or library is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + platforms: + - windows_arm64 + - linux_arm64 + - osx_arm64 + jobParameters: + testGroup: innerloop + isSingleFile: true + nameSuffix: NativeAOT_Libraries + buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # Build and test clr tools + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: checked + platforms: + - linux_x64 + jobParameters: + timeoutInMinutes: 120 + nameSuffix: CLR_Tools_Tests + buildArgs: -s clr.aot+clr.iltools+libs+clr.toolstests -c $(_BuildConfig) -test + enablePublishTestResults: true + testResultsFormat: 'xunit' + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build Mono AOT offset headers once, for consumption elsewhere + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + buildConfig: release + platforms: + - android_x64 + - browser_wasm + - tvos_arm64 + - ios_arm64 + - maccatalyst_x64 + jobParameters: + isOfficialBuild: ${{ variables.isOfficialBuild }} + # needed by crossaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build the whole product using Mono runtime + # Only when libraries, mono or installer are changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - tvossimulator_x64 + - linux_arm + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - linux_musl_x64 + - linux_riscv64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # WebAssembly legs + # + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - normal + - WasmTestOnBrowser + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - WasmTestOnBrowser + + # EAT Library tests - only run on linux + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _EAT + runAOT: false + shouldRunSmokeOnly: false + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # AOT Library tests + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm_win + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + + # Wasm.Build.Tests + - template: /eng/pipelines/common/templates/wasm-build-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm Debugger tests + - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm runtime tests + - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + parameters: + platforms: + - browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Build and Smoke Tests only - Wasm Threading Legs + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _Threading_Smoke + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - WasmTestOnBrowser + + # WASI/WASM + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + nameSuffix: '_Smoke' + extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldContinueOnError: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - normal + + - template: /eng/pipelines/common/templates/wasm-build-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + alwaysRun: ${{ variables.isRollingBuild }} + # + # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - ios_arm64 + - tvos_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + # FIXME: Will be moved to the runtime-extra-platforms-ioslike.yml + # + # iOS/tvOS devices + # Build the whole product using Mono and run runtime tests + # - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/global-build-job.yml @@ -1462,6 +583,7 @@ extends: runtimeFlavor: mono platforms: - ios_arm64 + # - tvos_arm64 variables: - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - name: _HelixSource @@ -1476,7 +598,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_Mono_RuntimeTests - buildArgs: -s mono+libs -c $(_BuildConfig) + buildArgs: -s mono+libs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true timeoutInMinutes: 240 # extra steps, run tests extraVariablesTemplates: @@ -1490,3 +612,886 @@ extends: interpreter: true testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + + # + # MacCatalyst interp - requires AOT Compilation and Interp flags + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - maccatalyst_x64 + - ${{ if eq(variables['isRollingBuild'], true) }}: + - maccatalyst_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono and Installer on LLVMJIT mode + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - osx_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMJIT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - linux_x64 + - linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMJIT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono and Installer on LLVMAOT mode + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - linux_x64 + - linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAOT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - osx_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAOT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono debug + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: debug + platforms: + - osx_x64 + - osx_arm64 + - linux_x64 + - linux_arm64 + # - linux_musl_arm64 + - windows_x64 + - windows_x86 + # - windows_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release AOT cross-compilers + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_x64 + - linux_musl_x64 + # - linux_arm64 + # - linux_musl_arm64 + - windows_x64 + # - windows_x86 + # - windows_arm64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + monoCrossAOTTargetOS: + - android + - browser + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - osx_x64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + - mono_tvos_offsets + - mono_ios_offsets + - mono_maccatalyst_offsets + monoCrossAOTTargetOS: + - android + - browser + - tvos + - ios + - maccatalyst + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_arm64 + - linux_musl_arm64 + - osx_arm64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_browser_offsets + monoCrossAOTTargetOS: + - browser + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_x64 + # - linux_musl_arm64 + - windows_x64 + - windows_x86 + # - windows_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release + # Only when libraries, mono, or the runtime tests changed + # Currently only these architectures are needed for the runtime tests. + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - osx_x64 + - linux_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release with LLVM AOT + # Only when mono, or the runtime tests changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_x64 + - linux_arm64 + jobParameters: + runtimeVariant: llvmaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build libraries using live CoreLib + # These set of libraries are built always no matter what changed + # The reason for that is because Corelib and Installer needs it and + # These are part of the test matrix for Libraries changes. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - linux_arm + - linux_musl_arm + - linux_musl_arm64 + - windows_arm64 + - windows_x86 + jobParameters: + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - linux_arm64 + - linux_musl_x64 + - linux_x64 + - osx_arm64 + - osx_x64 + - windows_x64 + - freebsd_x64 + jobParameters: + testScope: innerloop + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries debug build that only runs when coreclr is changed + # Only do this on PR builds since we use the Release builds for these test runs in CI + # and those are already built above + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Debug + platforms: + - windows_x86 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # + # Libraries release build that only runs when coreclr is changed in PRs + # We need these for checked coreclr + release libraries tests runs. + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - linux_x64 + - windows_x64 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - windows_x86 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + framework: net48 + runTests: true + testScope: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - windows_x64 + jobParameters: + framework: allConfigurations + runTests: true + useHelix: false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Installer Build and Test + # These are always built since they only take like 15 minutes + # we expect these to be done before we finish libraries or coreclr testing. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - linux_musl_arm + - linux_musl_arm64 + - windows_x86 + - windows_arm64 + - linux_arm + jobParameters: + liveRuntimeBuildConfig: release + liveLibrariesBuildConfig: Release + runOnlyIfDependenciesSucceeded: true + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + buildConfig: Release + platforms: + - osx_arm64 + - osx_x64 + - linux_x64 + - linux_arm64 + - linux_musl_x64 + - windows_x64 + - freebsd_x64 + jobParameters: + liveRuntimeBuildConfig: release + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runOnlyIfDependenciesSucceeded: true + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR Test builds using live libraries release build + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: checked + platforms: + - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR Test executions using live libraries + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - linux_arm + - windows_x86 + - windows_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - osx_x64 + - linux_x64 + - linux_arm64 + - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - osx_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # Only when Mono is changed + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + liveRuntimeBuildConfig: release + runtimeVariant: minijit + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build the whole product using Mono and run runtime tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - osx_x64 + - linux_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests + runtimeVariant: minijit + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # Mono CoreCLR runtime Test executions using live libraries in interpreter mode + # Only when Mono is changed + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - osx_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests + runtimeVariant: monointerpreter + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # + # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT + # Only when Mono is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - linux_x64 + # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + #- linux_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests + runtimeVariant: llvmaot + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + timeoutInMinutes: 180 + + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + llvmAotStepContainer: linux_x64_llvmaot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # Libraries Release Test Execution against a release mono runtime. + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + runtimeFlavor: mono + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + # - windows_x64 + - osx_x64 + - linux_arm64 + - linux_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + runtimeDisplayName: mono + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Release Test Execution against a release mono interpreter runtime. + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + runtimeFlavor: mono + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + # - windows_x64 + #- osx_x64 + - linux_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + interpreter: true + runtimeDisplayName: mono_interpreter + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Release Test Execution against a release coreclr runtime + # Only when the PR contains a libraries change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + - windows_x86 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Debug Test Execution against a release coreclr runtime + # Only when the PR contains a libraries change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - windows_x64 + - osx_x64 + - linux_x64 + - linux_musl_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # The next three jobs run checked coreclr + libraries tests. + # The matrix looks like the following, where the right columns specify which configurations + # the libraries tests are built in. + # ________________________________________ + # | Platform | PR | Rolling | + # | ---------------- | ------- | ------- | + # | linux-arm64 | Debug | Release | + # | windows-x86 | Debug | Release | + # | linux-musl-x64 | Debug | Release | + # | OSX-x64 | Debug | Release | + # | linux-musl-arm | Release | Release | + # | linux-musl-arm64 | Release | Release | + # | linux-x64 | Release | Release | + # | windows-x64 | Release | Release | + + # + # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # Only when the PR contains a coreclr change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - linux_arm64 + - windows_x86 + - linux_musl_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Release Libraries Test Execution against a checked runtime + # Only if CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + - linux_musl_arm + - linux_musl_arm64 + - linux_x64 + - windows_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - osx_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Sourcebuild legs + # We have 3 important legs for source-build: + # - Centos.8 (ensures that known non-portable RID is working) + # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # + # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.8 in rolling CI, + # Run Linux-x64 in PR. + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + helixQueueGroup: pr + platforms: + - SourceBuild_centos8_x64 + jobParameters: + nameSuffix: centos8SourceBuild + extraStepsParameters: + name: SourceBuildPackages + timeoutInMinutes: 95 + condition: eq(variables['isRollingBuild'], true) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + helixQueueGroup: pr + platforms: + - SourceBuild_banana24_x64 + jobParameters: + nameSuffix: banana24SourceBuild + extraStepsParameters: + name: SourceBuildPackages + timeoutInMinutes: 95 + condition: eq(variables['isRollingBuild'], true) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 9cfbab1953920d..9b53b11651d7bf 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -61,15 +61,21 @@ - - - + + + + + - + + Include="@(AppleAssembliesToBundle)" TargetDir="extraFiles" /> @@ -104,12 +110,8 @@ <_ApplePropertyNames Include="HybridGlobalization" /> <_ApplePropertyNames Include="AssemblyName" /> <_ApplePropertyNames Include="MonoEnableLLVM" /> - <_ApplePropertyNames Include="CustomMain" /> <_ApplePropertyNames Include="UseRuntimeComponents" /> - <_ApplePropertyNames Include="MonoForceInterpreter" /> - <_ApplePropertyNames Include="UseMonoJustInterp" /> - <_ApplePropertyNames Include="MainLibraryFileName" /> - <_ApplePropertyNames Include="DiagnosticPorts" /> + <_ApplePropertyNames Include="CustomMain" /> <_ApplePropertiesToPass Include="$(%(_ApplePropertyNames.Identity))" diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 05e30e823c537a..f4bf46cd298cb0 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -127,8 +127,8 @@ - - $([MSBuild]::NormalizePath('$(CustomRunScriptOutputPath)', '$(RunScriptOutputName)')) + + $([MSBuild]::NormalizePath('$(RunScriptOutputDirectory)', '$(RunScriptOutputName)')) - - - - @@ -245,10 +242,6 @@ - - diagnostics_tracing;marshal-ilgen - - $(TestRootDir)AppBundle\ $(OriginalPublishDir)AppleTestRunner.dll - true - true true + + diagnostics_tracing;marshal-ilgen + 127.0.0.1:9000,nosuspend,listen + + diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index f9c1085f618f29..d60383e494e1b6 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -16,19 +16,17 @@ $(TestArchiveTestsRoot)$(OSPlatformConfig)/ $(TestArchiveRoot)runtime/ - true - true - BuildiOSApp BuildiOSApp GenerateRunScript + true - + - $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle + $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle diff --git a/src/tests/build.proj b/src/tests/build.proj index 1a53d0dcaf50d9..de16f7a0de37e5 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -276,7 +276,7 @@ $(CMDDIR_GrandParent)/$(CategoryWithSlash)/$(XUnitWrapperFileName) $(IntermediateOutputPath)\iOSApps\$(Category) $(XUnitTestBinBase)$(CategoryWithSlash)\$(Category).app - True + <_MobileIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath), 'mobile')) @@ -287,37 +287,17 @@ tvos $(ArtifactsBinDir)microsoft.netcore.app.runtime.$(RuntimePackOSSuffix)-$(TargetArchitecture)/$(Configuration)/runtimes/$(RuntimePackOSSuffix)-$(TargetArchitecture) $(MicrosoftNetCoreAppRuntimePackDir)/native - - - - True + $([MSBuild]::NormalizeDirectory('$(BuildDir)', 'AppBundle')) - - - - - - - - @(TestDlls->'%(Filename)') - - - - $([MSBuild]::NormalizeDirectory('$(BuildDir)', 'AppBundle')) - true - - - - @@ -333,86 +313,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_AOTMode Condition="'$(MonoForceInterpreter)' != 'true'">Full - <_AOTMode Condition="'$(MonoForceInterpreter)' == 'true'">JustInterp - @(MonoAOTCompilerDefaultAotArguments, ';') - @(MonoAOTCompilerDefaultProcessArguments, ';') - <_MobileIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath), 'mobile')) - - - - <_AppleAssembliesInternal Include="$(BuildDir)/**/*.dll" /> - - <_AppleAssembliesInternal> - <_InternalForceInterpret Condition="'$(MonoForceInterpreter)' == 'true' and '%(FileName)%(Extension)' != 'System.Private.CoreLib.dll'">true - <_IsNative>false - - - <_AotInputAssemblies Include="@(_AppleAssembliesInternal)" - Condition="'%(_AppleAssembliesInternal._InternalForceInterpret)' != 'true'"> - $(AotArguments) - $(ProcessArguments) - - - <_AOT_InternalForceInterpretAssemblies Include="@(_AppleAssembliesInternal->WithMetadataValue('_InternalForceInterpret', 'true'))" /> - <_AppleAssembliesInternal Remove="@(_AppleAssembliesInternal)" /> - - - <_MonoAotCrossCompilerPath>$([MSBuild]::NormalizePath($(MonoAotCrossDir), 'mono-aot-cross')) - <_MonoAotCrossCompilerPath Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">$(_MonoAotCrossCompilerPath).exe - - - - - - - - - - - $(BuildDir)/ $(AssemblyName) + true @@ -437,18 +347,29 @@ + https://github.com/dotnet/runtime/issues/54399 + + needs triage + + + needs triage + diff --git a/src/tests/tracing/eventpipe/Directory.Build.targets b/src/tests/tracing/eventpipe/Directory.Build.targets index 5e4d9c5ab3ba0c..11ef14f51aa612 100644 --- a/src/tests/tracing/eventpipe/Directory.Build.targets +++ b/src/tests/tracing/eventpipe/Directory.Build.targets @@ -1,12 +1,5 @@ - - diagnostics_tracing;marshal-ilgen - 127.0.0.1:9000,nosuspend,listen - true - true - true - From 60564975109cdfba0b8a5f9f4e3a52dad7d2c18e Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 14 Jul 2023 19:14:12 +0200 Subject: [PATCH 50/72] Modify the build configuration and skip recursive paths in library tests --- eng/pipelines/runtime.yml | 3 ++- eng/testing/tests.ioslike.targets | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 028e931d185276..262f2c97fd1c36 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -598,7 +598,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_Mono_RuntimeTests - buildArgs: -s mono+libs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true + buildArgs: -s mono+libs -c $(_BuildConfig) timeoutInMinutes: 240 # extra steps, run tests extraVariablesTemplates: @@ -610,6 +610,7 @@ extends: creator: dotnet-bot compileOnHelix: true interpreter: true + testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 9b53b11651d7bf..d818ca44428439 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -66,9 +66,9 @@ if they match, consider it as the root directory and copy the files there, otherwise, copy the files to a subdirectory. --> - - From b2a4461838ea96840b5281c11179305cbefb8c55 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 14 Jul 2023 21:28:46 +0200 Subject: [PATCH 51/72] Run Helix targets after the build --- src/tests/Directory.Build.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index eb49d46d9cf2e4..ad34d9a0f794cf 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -16,8 +16,8 @@ $(TestArchiveTestsRoot)$(OSPlatformConfig)/ $(TestArchiveRoot)runtime/ - BuildiOSApp - BuildiOSApp + BuildMonoiOSApp + BuildMonoiOSApp GenerateRunScript true From eb063cc0a43605ad91002d6cf94c516a498379b8 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 15 Jul 2023 13:50:14 +0200 Subject: [PATCH 52/72] Use apple run command for the runtime tests --- src/tests/build.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/build.proj b/src/tests/build.proj index c142c214d32e22..08a2675330ab0f 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -370,7 +370,7 @@ string value = item.ItemSpec; // Add the MONO_APPLE_APP_ENTRY_POINT_LIB_NAME environment parameter to the run script - string output = lastLine.Replace("--signal-app-end", $"--signal-app-end --set-env=MONO_APPLE_APP_ENTRY_POINT_LIB_NAME={value}"); + string output = lastLine.Replace("apple test", "apple run").Replace("--signal-app-end", $"--expected-exit-code=100 --set-env=MONO_APPLE_APP_ENTRY_POINT_LIB_NAME={value}"); resultBuilder.AppendLine(output); // Rename the log file to match the MONO_APPLE_APP_ENTRY_POINT_LIB_NAME From 8e37c970db3cb5da5198917ba337c36796eb6d8e Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 15 Jul 2023 16:04:11 +0200 Subject: [PATCH 53/72] Test the CI when runtime components enabled --- src/tests/build.proj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/build.proj b/src/tests/build.proj index 08a2675330ab0f..71b4d1921bb83b 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -328,6 +328,8 @@ $(BuildDir)/ $(AssemblyName) true + + true From 07250546cb2bdea1584449f2367c91bd12d3ce07 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 15 Jul 2023 23:28:15 +0200 Subject: [PATCH 54/72] Disable failing tests --- src/tests/issues.targets | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 2d39aa2ac753ab..fb4e5d28202f6e 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2853,6 +2853,12 @@ needs triage + + needs triage + + + needs triage + From 92898fce986d90008b07f9879619ea9d1f012745 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sun, 16 Jul 2023 20:56:03 +0200 Subject: [PATCH 55/72] Run Mono runtime tests on tvos --- eng/pipelines/runtime.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 262f2c97fd1c36..a7e40da0422771 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -583,7 +583,7 @@ extends: runtimeFlavor: mono platforms: - ios_arm64 - # - tvos_arm64 + - tvos_arm64 variables: - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - name: _HelixSource From 5c8ffb38155d9c774de4701b6c11f91145c3801e Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sun, 16 Jul 2023 21:04:05 +0200 Subject: [PATCH 56/72] Enable runtime tests on simulators and maccatalyst --- .../runtime-extra-platforms-ioslike.yml | 10 +++-- ...ntime-extra-platforms-ioslikesimulator.yml | 6 ++- .../runtime-extra-platforms-maccatalyst.yml | 40 +++++++++++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index 6145d3ed0c71fb..a8a304fd923741 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -47,8 +47,10 @@ jobs: testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # FIXME: Will be moved to the runtime-extra-platforms-ioslike.yml # - # Build the whole product using Mono for iOS/tvOS and run runtime tests with iOS/tvOS devices + # iOS/tvOS devices + # Build the whole product using Mono and run runtime tests # - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -85,9 +87,11 @@ jobs: extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml extraStepsParameters: creator: dotnet-bot - # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: tree tracing/eventpipe + compileOnHelix: true + interpreter: true + testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - ${{ if eq(parameters.isMonoOnlyBuild, false) }}: # diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml index d7643974c4e3ce..357d5b881e7a33 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml @@ -85,9 +85,11 @@ jobs: extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml extraStepsParameters: creator: dotnet-bot - # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254 - testBuildArgs: tree tracing/eventpipe + compileOnHelix: true + interpreter: true + testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true # # Build the whole product using Native AOT for iOSSimulator/tvOSSimulator and run runtime tests with iOS/tvOS simulators diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index 736bf0516dfdf2..f7c895026f906e 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -75,3 +75,43 @@ jobs: creator: dotnet-bot interpreter: true testRunNamePrefixSuffix: Mono_$(_BuildConfig) + + +# +# Build the whole product using Mono for Maccatalyst and run runtime tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} + isMacCatalystOnlyBuild: ${{ parameters.isMacCatalystOnlyBuild }} + platforms: + - maccatalyst_x64 + - maccatalyst_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_RuntimeTests + buildArgs: -s mono+libs -c $(_BuildConfig) + timeoutInMinutes: 180 + # extra steps, run tests + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + compileOnHelix: true + interpreter: true + testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true From 9189d1874625285e8b9aada5487b679893b738df Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sun, 16 Jul 2023 22:07:34 +0200 Subject: [PATCH 57/72] Skip NativeProjectBinaries check for mobile targets --- src/tests/Directory.Build.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index ad34d9a0f794cf..aad04648bc4ee3 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -221,7 +221,7 @@ + Condition="'@(NativeProjectBinaries)' == '' And '$(TargetOS)' != 'browser' And '$(TargetsMobile)' != 'true'"/> Date: Sun, 16 Jul 2023 23:50:29 +0200 Subject: [PATCH 58/72] Don't sign on simulators and maccatalyst --- eng/testing/tests.ioslike.targets | 3 ++- src/tests/build.proj | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index d818ca44428439..9d4b5ca1d45dd3 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -21,10 +21,11 @@ <_ResetSimulatorSwitch Condition="'$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'tvossimulator'">--reset-simulator <_SignalAppEndSwitch Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">--signal-app-end + <_AppleSignCommand Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">sign "$app" <_AfterBuildCommands> mv $XHARNESS_OUT/AOTBuild.binlog "$HELIX_WORKITEM_UPLOAD_ROOT" - sign "$app" + $(_AppleSignCommand) xharness apple test --app "$app" --output-directory "$output_directory" --target "$target" --timeout "$timeout" --xcode "$xcode_path" -v --launch-timeout "$launch_timeout" $(_ResetSimulatorSwitch) $(_SignalAppEndSwitch) -- $(_AOTBuildCommand) $(_AfterBuildCommands) diff --git a/src/tests/build.proj b/src/tests/build.proj index 71b4d1921bb83b..4720396c85920c 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -290,6 +290,8 @@ ios tvossimulator tvos + maccatalyst + $(ArtifactsBinDir)microsoft.netcore.app.runtime.$(RuntimePackOSSuffix)-$(TargetArchitecture)/$(Configuration)/runtimes/$(RuntimePackOSSuffix)-$(TargetArchitecture) $(MicrosoftNetCoreAppRuntimePackDir)/native From 3832dbf4627da922ec0b0f2395a1319d1dda0351 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 17 Jul 2023 08:25:12 +0200 Subject: [PATCH 59/72] Add --signal-app-end for simulator runs --- eng/testing/tests.ioslike.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 9d4b5ca1d45dd3..220fef4059026b 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -20,7 +20,7 @@ <_AOTBuildCommand>$(_AOTBuildCommand) <_ResetSimulatorSwitch Condition="'$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'tvossimulator'">--reset-simulator - <_SignalAppEndSwitch Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">--signal-app-end + <_SignalAppEndSwitch>--signal-app-end <_AppleSignCommand Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">sign "$app" <_AfterBuildCommands> From 4b991fa842b5ea64d0ef9304c2885f9ed2d9ee41 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 17 Jul 2023 12:31:47 +0200 Subject: [PATCH 60/72] Exclude maccatalyst jobs --- .../runtime-extra-platforms-maccatalyst.yml | 40 ------------------- src/tests/Directory.Build.targets | 2 +- src/tests/build.proj | 2 +- 3 files changed, 2 insertions(+), 42 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index f7c895026f906e..736bf0516dfdf2 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -75,43 +75,3 @@ jobs: creator: dotnet-bot interpreter: true testRunNamePrefixSuffix: Mono_$(_BuildConfig) - - -# -# Build the whole product using Mono for Maccatalyst and run runtime tests -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isMacCatalystOnlyBuild: ${{ parameters.isMacCatalystOnlyBuild }} - platforms: - - maccatalyst_x64 - - maccatalyst_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_RuntimeTests - buildArgs: -s mono+libs -c $(_BuildConfig) - timeoutInMinutes: 180 - # extra steps, run tests - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - compileOnHelix: true - interpreter: true - testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index aad04648bc4ee3..26cf47e52bebf4 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -22,7 +22,7 @@ true - + diff --git a/src/tests/build.proj b/src/tests/build.proj index 4720396c85920c..853fc210e52ce5 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -378,7 +378,7 @@ resultBuilder.AppendLine(output); // Rename the log file to match the MONO_APPLE_APP_ENTRY_POINT_LIB_NAME - resultBuilder.AppendLine("mv \"${output_directory}/net.dot."+AppName+".log\" \"${output_directory}/"+value.Split('/')[0]+".log\""); + resultBuilder.AppendLine("cp \"${output_directory}/net.dot."+AppName+".log\" \"${output_directory}/"+value.Split('/')[0]+".log\""); } StringBuilder outputScriptBuilder = new StringBuilder(string.Join("\n", lines.Take(lines.Length - 1))); From 65fde6921569620916bf3ccf8b8d5e378ffd950e Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 17 Jul 2023 15:57:53 +0200 Subject: [PATCH 61/72] Terminate execution and return non-zero code if test fail --- src/tests/build.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/build.proj b/src/tests/build.proj index 853fc210e52ce5..0c0b017197f3d8 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -374,11 +374,11 @@ string value = item.ItemSpec; // Add the MONO_APPLE_APP_ENTRY_POINT_LIB_NAME environment parameter to the run script - string output = lastLine.Replace("apple test", "apple run").Replace("--signal-app-end", $"--expected-exit-code=100 --set-env=MONO_APPLE_APP_ENTRY_POINT_LIB_NAME={value}"); + string output = lastLine.Replace("apple test", "apple run").Replace("--signal-app-end", $"--expected-exit-code=100 --set-env=MONO_APPLE_APP_ENTRY_POINT_LIB_NAME={value}") + "&& echo \"Test passed\" || { echo \"Test failed\"; exit 1; }"; resultBuilder.AppendLine(output); // Rename the log file to match the MONO_APPLE_APP_ENTRY_POINT_LIB_NAME - resultBuilder.AppendLine("cp \"${output_directory}/net.dot."+AppName+".log\" \"${output_directory}/"+value.Split('/')[0]+".log\""); + resultBuilder.AppendLine("mv \"${output_directory}/net.dot."+AppName+".log\" \"${output_directory}/"+value.Split('/')[0]+".log\""); } StringBuilder outputScriptBuilder = new StringBuilder(string.Join("\n", lines.Take(lines.Length - 1))); From 4afbe3eaf9c8648b08b5d5138171032f0a7f155d Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 18 Jul 2023 10:50:32 +0200 Subject: [PATCH 62/72] Enable ios/tvos tests --- src/mono/msbuild/apple/build/AppleBuild.props | 2 +- src/tests/issues.targets | 249 +----------------- 2 files changed, 7 insertions(+), 244 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index 046c34173401b5..75426ebdcda61f 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -2,7 +2,6 @@ true - true @@ -11,6 +10,7 @@ + true $(TargetOS)-$(TargetArchitecture.ToLowerInvariant()) true true diff --git a/src/tests/issues.targets b/src/tests/issues.targets index fb4e5d28202f6e..79b1707563a931 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2299,7 +2299,7 @@ - + needs triage @@ -2427,7 +2427,7 @@ - + expected failure: overlapped structs fail at AOT compile time, not runtime @@ -2771,7 +2771,7 @@ - + https://github.com/dotnet/runtime/issues/48914 @@ -2861,7 +2861,7 @@ - + https://github.com/dotnet/runtime/issues/57350 @@ -3729,246 +3729,9 @@ - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - System.PlatformNotSupportedException: Operation is not supported on this platform - - - System.DllNotFoundException: DoesNotExist - - - System.DllNotFoundException: DoesNotExist - - - System.DllNotFoundException: UnmanagedCallersOnlyDll - - - System.DllNotFoundException: ObjectiveC - - - System.DllNotFoundException: SuppressGCTransitionNative - - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.assert, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. - - - System.DllNotFoundException: GCPollNative - - - System.DllNotFoundException: CrossplatVirtualAlloc - - - - System.ArgumentNullException: Value cannot be null. (Parameter 'path1') - - - - System.IO.FileNotFoundException: Could not load file or assembly '/.../Library/Developer/CoreSimulator/Devices/941235AB-7563-4D79-AC28-946B7AD2304A/data/Containers/Bundle/Application/40176A30-D8F5-4497-958A-6514E5C684FC/readytorun_multifolder.app/testdir-multifolder/../FolderA/FolderA/FolderA.dll' or one of its dependencies. - - - - Failed to catch an exception! System.DllNotFoundException: ForeignThreadExceptionsNative - - - - USAGE: MultipleWR.exe num objects [track] - - - USAGE: MultipleWR.exe num objects [track] - - - GC_API 0|1|2 - - - GC_API 0|1|2 - - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.runner.utility.netcoreapp10, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. - - - - Environment variable is not set: 'CORE_ROOT' - - - - System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') - - - - System.DllNotFoundException: ThisCallNative - - - https://github.com/dotnet/runtime/issues/50440 - - - https://github.com/dotnet/runtime/issues/50440 - - - https://github.com/dotnet/runtime/issues/50440 - - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - This test requires CORE_ROOT to be set - - - ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.assert, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. - - - ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. - - - - Tries to access project source code - not supported on mobile and wasm - - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - missing assembly - - - https://github.com/dotnet/runtime/issues/74891 - - - https://github.com/dotnet/runtime/issues/74891 - - - https://github.com/dotnet/runtime/issues/74891 - - - https://github.com/dotnet/runtime/issues/74891 - - - https://github.com/dotnet/runtime/issues/74891 - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - - - - - needs triage - - - needs triage - - - - + - mobile and wasm don't support tests with native libraries. wasm also needs static linking + Mobile and wasm don't support tests with native libraries. Wasm also needs static linking. From 60ccaa469e9519064836918a5b36842e35b5d773 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 18 Jul 2023 13:49:44 +0200 Subject: [PATCH 63/72] Revert issues.targets changes --- .../runtime-extra-platforms-ioslike.yml | 88 +++--- src/tests/Directory.Build.targets | 3 +- src/tests/build.proj | 3 +- src/tests/issues.targets | 269 ++++++++++++++++-- 4 files changed, 291 insertions(+), 72 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index 2f3330bf6e6287..db259752135b0e 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -44,50 +44,50 @@ jobs: testRunNamePrefixSuffix: Mono_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # - # iOS/tvOS devices - # Build the whole product using Mono and run runtime tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }} - platforms: - - ios_arm64 - - tvos_arm64 - variables: - - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: pr/dotnet/runtime/$(Build.SourceBranch) - - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: ci/dotnet/runtime/$(Build.SourceBranch) - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_RuntimeTests - buildArgs: -s mono+libs -c $(_BuildConfig) - timeoutInMinutes: 240 - # extra steps, run tests - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - compileOnHelix: true - interpreter: true - testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true +# +# iOS/tvOS devices +# Build the whole product using Mono and run runtime tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} + isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }} + platforms: + - ios_arm64 + - tvos_arm64 + variables: + - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: pr/dotnet/runtime/$(Build.SourceBranch) + - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: ci/dotnet/runtime/$(Build.SourceBranch) + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_RuntimeTests + buildArgs: -s mono+libs -c $(_BuildConfig) + timeoutInMinutes: 240 + # extra steps, run tests + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + compileOnHelix: true + interpreter: true + testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true # # Build the whole product using NativeAOT for iOS/tvOS and run runtime tests with iOS/tvOS devices diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index 964b108e3a0ca5..9837201c9b123f 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -8,6 +8,8 @@ --> + $(TargetOS).AnyCPU.$(Configuration) @@ -22,7 +24,6 @@ true - diff --git a/src/tests/build.proj b/src/tests/build.proj index 0c0b017197f3d8..8e2f93b0e88508 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -330,8 +330,7 @@ $(BuildDir)/ $(AssemblyName) true - - true + true diff --git a/src/tests/issues.targets b/src/tests/issues.targets index fbda68314b2e4e..94dd57933333ac 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2302,7 +2302,7 @@ - + needs triage @@ -2430,7 +2430,7 @@ - + expected failure: overlapped structs fail at AOT compile time, not runtime @@ -2774,7 +2774,7 @@ - + https://github.com/dotnet/runtime/issues/48914 @@ -2844,27 +2844,9 @@ https://github.com/dotnet/runtime/issues/86327 - - https://github.com/dotnet/runtime/issues/54399 - - - https://github.com/dotnet/runtime/issues/54399 - - - needs triage - - - needs triage - - - needs triage - - - needs triage - - + https://github.com/dotnet/runtime/issues/57350 @@ -3732,9 +3714,246 @@ - + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + System.PlatformNotSupportedException: Operation is not supported on this platform + + + System.DllNotFoundException: DoesNotExist + + + System.DllNotFoundException: DoesNotExist + + + System.DllNotFoundException: UnmanagedCallersOnlyDll + + + System.DllNotFoundException: ObjectiveC + + + System.DllNotFoundException: SuppressGCTransitionNative + + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.assert, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. + + + System.DllNotFoundException: GCPollNative + + + System.DllNotFoundException: CrossplatVirtualAlloc + + + + System.ArgumentNullException: Value cannot be null. (Parameter 'path1') + + + + System.IO.FileNotFoundException: Could not load file or assembly '/.../Library/Developer/CoreSimulator/Devices/941235AB-7563-4D79-AC28-946B7AD2304A/data/Containers/Bundle/Application/40176A30-D8F5-4497-958A-6514E5C684FC/readytorun_multifolder.app/testdir-multifolder/../FolderA/FolderA/FolderA.dll' or one of its dependencies. + + + + Failed to catch an exception! System.DllNotFoundException: ForeignThreadExceptionsNative + + + + USAGE: MultipleWR.exe num objects [track] + + + USAGE: MultipleWR.exe num objects [track] + + + GC_API 0|1|2 + + + GC_API 0|1|2 + + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.runner.utility.netcoreapp10, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. + + + + Environment variable is not set: 'CORE_ROOT' + + + + System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') + + + + System.DllNotFoundException: ThisCallNative + + + https://github.com/dotnet/runtime/issues/50440 + + + https://github.com/dotnet/runtime/issues/50440 + + + https://github.com/dotnet/runtime/issues/50440 + + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + This test requires CORE_ROOT to be set + + + ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.assert, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. + + + ((null) error) * Assertion at runtime/src/mono/mono/metadata/assembly.c:2049, condition `is_ok (error)' not met, function:mono_assembly_load_friends, Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + System.IO.FileNotFoundException: Could not load file or assembly 'xunit.performance.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=67066efe964d3b03' or one of its dependencies. + + + + Tries to access project source code - not supported on mobile and wasm + + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + missing assembly + + + https://github.com/dotnet/runtime/issues/74891 + + + https://github.com/dotnet/runtime/issues/74891 + + + https://github.com/dotnet/runtime/issues/74891 + + + https://github.com/dotnet/runtime/issues/74891 + + + https://github.com/dotnet/runtime/issues/74891 + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + + + + needs triage + + + needs triage + + + + - Mobile and wasm don't support tests with native libraries. Wasm also needs static linking. + mobile and wasm don't support tests with native libraries. wasm also needs static linking @@ -3747,4 +3966,4 @@ Condition="'%(ExcludeList.Extension)' == '.OutOfProcessTest'" /> - + \ No newline at end of file From 5847540ff2815ca39d0dfec0bb97ddda4f3c1e24 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 18 Jul 2023 15:38:39 +0200 Subject: [PATCH 64/72] Allow local AOT compilation --- src/tests/Directory.Build.targets | 5 +++-- src/tests/build.proj | 2 +- src/tests/issues.targets | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index 9837201c9b123f..58d769fd1db673 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -8,8 +8,6 @@ --> - $(TargetOS).AnyCPU.$(Configuration) @@ -25,6 +23,9 @@ true + + $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle diff --git a/src/tests/build.proj b/src/tests/build.proj index 8e2f93b0e88508..e0a194cba796c9 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -333,7 +333,7 @@ true - + diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 94dd57933333ac..10155d494cbc30 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -3966,4 +3966,4 @@ Condition="'%(ExcludeList.Extension)' == '.OutOfProcessTest'" /> - \ No newline at end of file + From 9b964827773aebe52bf1890975741d180d6e5739 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 19 Jul 2023 00:12:03 +0200 Subject: [PATCH 65/72] Add extra dlls to the bundle --- src/tests/build.proj | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tests/build.proj b/src/tests/build.proj index e0a194cba796c9..523ce5c60ec974 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -306,6 +306,10 @@ + + @(TestDlls->'%(Filename)') + + @@ -320,9 +324,15 @@ + + From ce51b807af84fa650d4839ffca00f3c4df6ffa8a Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 19 Jul 2023 13:48:59 +0200 Subject: [PATCH 66/72] Disable failing tests --- src/tests/issues.targets | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 10155d494cbc30..fcd9dbcc465a0e 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2118,7 +2118,7 @@ - + https://github.com/dotnet/runtime/issues/46622 @@ -2302,7 +2302,7 @@ - + needs triage @@ -2430,7 +2430,7 @@ - + expected failure: overlapped structs fail at AOT compile time, not runtime @@ -2774,7 +2774,7 @@ - + https://github.com/dotnet/runtime/issues/48914 @@ -3096,7 +3096,7 @@ - + https://github.com/dotnet/runtime/issues/75756 @@ -3454,6 +3454,9 @@ Loads an assembly from file + + + System.Threading.Thread.UnsafeStart not supported @@ -3714,7 +3717,7 @@ - + missing assembly @@ -3942,16 +3945,7 @@ - - - needs triage - - - needs triage - - - - + mobile and wasm don't support tests with native libraries. wasm also needs static linking From 3d7e6b7d22b60177e23d73ef0a286261e3236fba Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 19 Jul 2023 16:40:55 +0200 Subject: [PATCH 67/72] Disable failing tests --- src/tests/issues.targets | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index fcd9dbcc465a0e..ea1f65a840d804 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -3943,6 +3943,15 @@ needs triage + + needs triage + + + needs triage + + + needs triage + From 21518f9b6c7871cec39d4b7ee40e503c0c77f0c3 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 19 Jul 2023 20:04:48 +0200 Subject: [PATCH 68/72] Disable failing tests --- eng/pipelines/runtime.yml | 44 --------------------------------------- src/tests/issues.targets | 6 ++++++ 2 files changed, 6 insertions(+), 44 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 11b55eaba764d5..68b3a915ce6454 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -575,50 +575,6 @@ extends: eq(variables['monoContainsChange'], true), eq(variables['isRollingBuild'], true)) - # FIXME: Will be moved to the runtime-extra-platforms-ioslike.yml - # - # iOS/tvOS devices - # Build the whole product using Mono and run runtime tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - ios_arm64 - - tvos_arm64 - variables: - - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: pr/dotnet/runtime/$(Build.SourceBranch) - - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: ci/dotnet/runtime/$(Build.SourceBranch) - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_RuntimeTests - buildArgs: -s mono+libs -c $(_BuildConfig) - timeoutInMinutes: 240 - # extra steps, run tests - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - parameters: - testGroup: innerloop - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - compileOnHelix: true - interpreter: true - testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # # MacCatalyst interp - requires AOT Compilation and Interp flags # Build the whole product using Mono and run libraries tests diff --git a/src/tests/issues.targets b/src/tests/issues.targets index ea1f65a840d804..f0846e233fb051 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -3960,6 +3960,12 @@ + + + needs triage + + + Date: Thu, 20 Jul 2023 08:30:56 +0200 Subject: [PATCH 69/72] Disable failing tests on simulators --- src/tests/issues.targets | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index f0846e233fb051..c58a2390fd4605 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -3964,6 +3964,30 @@ needs triage + + needs triage + + + + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + From ead3bf21149fcab0ee03f77a5aed1e0bff29a08c Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 20 Jul 2023 11:00:36 +0200 Subject: [PATCH 70/72] Disable tests that timeouts on simulators --- src/tests/issues.targets | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index c58a2390fd4605..5aa4b17117baff 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -3973,19 +3973,10 @@ needs triage - - needs triage - - - needs triage - - - needs triage - - + needs triage - + needs triage From d27ed9c2fd500a2cca7d35e59e4ed5d0700c6c69 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 20 Jul 2023 14:55:39 +0200 Subject: [PATCH 71/72] Disable failing tests on simulators --- src/tests/issues.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 5aa4b17117baff..64e10bd0e7202f 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -3960,7 +3960,7 @@ - + needs triage @@ -3969,7 +3969,7 @@ - + needs triage From b4e60f2104eb70e498ea04bcff436516e79e0f43 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 21 Jul 2023 14:45:06 +0200 Subject: [PATCH 72/72] Refactor properties to be more descriptive --- eng/testing/tests.ioslike.targets | 8 ++++---- .../msbuild/apple/data/ProxyProjectForAOTOnHelix.proj | 2 +- src/tests/Directory.Build.targets | 4 ++-- src/tests/build.proj | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 220fef4059026b..192e93689cbe68 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -67,9 +67,9 @@ if they match, consider it as the root directory and copy the files there, otherwise, copy the files to a subdirectory. --> - - @@ -112,7 +112,7 @@ <_ApplePropertyNames Include="AssemblyName" /> <_ApplePropertyNames Include="MonoEnableLLVM" /> <_ApplePropertyNames Include="UseRuntimeComponents" /> - <_ApplePropertyNames Include="CustomMain" /> + <_ApplePropertyNames Include="IsRuntimeTests" /> <_ApplePropertiesToPass Include="$(%(_ApplePropertyNames.Identity))" @@ -147,7 +147,7 @@ true - AppleTestRunner.dll + AppleTestRunner.dll $(PublishDir) $(BundleDir) diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index eca51c9ae0b59a..6c166f7d629bd2 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -29,7 +29,7 @@ $(OriginalPublishDir) $(TestRootDir)AppBundle\ - $(OriginalPublishDir)AppleTestRunner.dll + $(OriginalPublishDir)AppleTestRunner.dll true diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index 58d769fd1db673..c8b7799fe630f6 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -20,13 +20,13 @@ BuildMonoiOSApp GenerateRunScript - true + true - + $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle diff --git a/src/tests/build.proj b/src/tests/build.proj index 523ce5c60ec974..e20d07cf95012f 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -343,13 +343,13 @@ true - + - +