diff --git a/eng/Versions.props b/eng/Versions.props
index ad0283439a0745..50d929abea061a 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -109,7 +109,7 @@
2.0.0
17.10.0-beta1.24272.1
- 3.1.16
+ 3.1.28
0.2.621003
2.1.0
2.0.3
@@ -124,6 +124,7 @@
1.6.0
17.4.0-preview-20220707-01
+ 0.1.32221
3.12.0
4.5.0
6.0.4
diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml
index 44a5d48a7b478e..a3996ea84b68bc 100644
--- a/eng/pipelines/common/templates/runtimes/run-test-job.yml
+++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml
@@ -233,19 +233,19 @@ jobs:
# and directly unzip them there after download). Unfortunately the logic to copy
# the native artifacts to the final test folders is dependent on availability of the
# managed test artifacts. This step also generates the final test execution scripts.
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly $(logRootNameArg)Native $(testFilterArg) $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg) $(codeFlowEnforcementArg)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly -tree tracing $(logRootNameArg)Native $(testFilterArg) $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg) $(codeFlowEnforcementArg)
displayName: Copy native test components to test output folder
# Generate test wrappers. This is the step that examines issues.targets to exclude tests.
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) buildtestwrappersonly $(logRootNameArg)Wrappers $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) buildtestwrappersonly -tree tracing $(logRootNameArg)Wrappers $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg)
displayName: Generate test wrappers
# Compose the Core_Root folder containing all artifacts needed for running
# CoreCLR tests. This step also compiles the framework using Crossgen2
# in ReadyToRun jobs.
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) generatelayoutonly $(logRootNameArg)Layout $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg) -ci
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) generatelayoutonly -tree tracing $(logRootNameArg)Layout $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg) -ci
displayName: Generate CORE_ROOT
# Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64)
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index 7184087e80f660..014b87e7d36566 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -69,171 +69,171 @@ extends:
#
# Build CoreCLR verticals where we don't run host tests
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- platforms:
- - linux_musl_arm
- - linux_musl_arm64
- - windows_arm64
- - linux_arm
- jobParameters:
- nameSuffix: AllSubsets_CoreCLR_ReleaseRuntimeLibs
- buildArgs: -s clr+libs+host+packs -rc Release -lc Release -c $(_BuildConfig)
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
- buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- platforms:
- - linux_arm64
- - linux_musl_x64
- jobParameters:
- nameSuffix: AllSubsets_CoreCLR
- buildArgs: -s clr+libs+host+packs -rc Release -c Release -lc $(_BuildConfig)
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
- buildConfig: Debug
- platforms:
- - browser_wasm
- - browser_wasm_win
- jobParameters:
- nameSuffix: AllSubsets_CoreCLR
- buildArgs: -s clr+libs+packs -c $(_BuildConfig) -lc Release
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml
- parameters:
- testBuildArgs: test JIT/interpreter/Interpreter.csproj
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
- parameters:
- testGroup: innerloop
- liveLibrariesBuildConfig: Release
- condition: >-
- or(
- eq(variables['wasmDarcDependenciesChanged'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_wasm_coreclr_runtimetests.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 }}
+ # platforms:
+ # - linux_musl_arm
+ # - linux_musl_arm64
+ # - windows_arm64
+ # - linux_arm
+ # jobParameters:
+ # nameSuffix: AllSubsets_CoreCLR_ReleaseRuntimeLibs
+ # buildArgs: -s clr+libs+host+packs -rc Release -lc Release -c $(_BuildConfig)
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
+ # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ # platforms:
+ # - linux_arm64
+ # - linux_musl_x64
+ # jobParameters:
+ # nameSuffix: AllSubsets_CoreCLR
+ # buildArgs: -s clr+libs+host+packs -rc Release -c Release -lc $(_BuildConfig)
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
+ # buildConfig: Debug
+ # platforms:
+ # - browser_wasm
+ # - browser_wasm_win
+ # jobParameters:
+ # nameSuffix: AllSubsets_CoreCLR
+ # buildArgs: -s clr+libs+packs -c $(_BuildConfig) -lc Release
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml
+ # parameters:
+ # testBuildArgs: test JIT/interpreter/Interpreter.csproj
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
+ # parameters:
+ # testGroup: innerloop
+ # liveLibrariesBuildConfig: Release
+ # condition: >-
+ # or(
+ # eq(variables['wasmDarcDependenciesChanged'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_wasm_coreclr_runtimetests.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CoreCLR and Libraries with Libraries tests
# For running libraries tests and installer tests
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- platforms:
- - linux_x64
- - linux_musl_x64
- - osx_x64
- - windows_x64
- jobParameters:
- nameSuffix: CoreCLR_Libraries
- buildArgs: -s clr+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/helix
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(variables['isRollingBuild'], true))
-
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: release
- platforms:
- - windows_x86
- jobParameters:
- nameSuffix: CoreCLR_Libraries
- buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/helix
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.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 }}
+ # platforms:
+ # - linux_x64
+ # - linux_musl_x64
+ # - osx_x64
+ # - windows_x64
+ # jobParameters:
+ # nameSuffix: CoreCLR_Libraries
+ # buildArgs: -s clr+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+
+ # - template: /eng/pipelines/common/platform-matrix.yml
+ # parameters:
+ # jobTemplate: /eng/pipelines/common/global-build-job.yml
+ # buildConfig: release
+ # platforms:
+ # - windows_x86
+ # jobParameters:
+ # nameSuffix: CoreCLR_Libraries
+ # buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CoreCLR and Libraries
# For running installer tests
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: release
- platforms:
- - osx_arm64
- jobParameters:
- nameSuffix: CoreCLR_Libraries
- buildArgs: -s clr+libs -c $(_BuildConfig)
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - template: /eng/pipelines/common/platform-matrix.yml
+ # parameters:
+ # jobTemplate: /eng/pipelines/common/global-build-job.yml
+ # buildConfig: release
+ # platforms:
+ # - osx_arm64
+ # jobParameters:
+ # nameSuffix: CoreCLR_Libraries
+ # buildArgs: -s clr+libs -c $(_BuildConfig)
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CoreCLR and Libraries with the respective tests
@@ -245,7 +245,7 @@ extends:
buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
platforms:
- linux_arm64
- - osx_x64
+ # - osx_x64
jobParameters:
nameSuffix: Libraries_CheckedCoreCLR
buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) -rc Checked /p:ArchiveTests=true
@@ -287,7 +287,7 @@ extends:
buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
platforms:
- linux_x64
- - windows_x64
+ # - windows_x64
jobParameters:
nameSuffix: Libraries_CheckedCoreCLR
buildArgs: -s clr+clr.wasmjit+libs -c $(_BuildConfig) -rc Checked
@@ -314,1233 +314,1233 @@ extends:
eq(stageDependencies.EvaluatePaths.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: ${{ variables.debugOnPrReleaseOnRolling }}
- platforms:
- - linux_musl_x64
- - windows_x86
- jobParameters:
- nameSuffix: Libraries_CheckedCoreCLR
- buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) -rc Checked /p:ArchiveTests=true
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/helix
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.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 }}
- platforms:
- - osx_arm64
- jobParameters:
- nameSuffix: Libraries_CheckedCoreCLR
- buildArgs: -s clr+libs -c $(_BuildConfig) -rc Checked
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/native-test-assets-variables.yml
- parameters:
- testGroup: innerloop
- configOverride: Checked
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true),
- eq(variables['isRollingBuild'], true))
-
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: checked
- platforms:
- - linux_arm
- - windows_arm64
- - windows_x86
- jobParameters:
- nameSuffix: CoreCLR_ReleaseLibraries
- buildArgs: -s clr+libs -rc $(_BuildConfig) -c Release
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/native-test-assets-variables.yml
- parameters:
- testGroup: innerloop
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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: checked
- platforms:
- - linux_x64
- - linux_musl_arm
- - linux_musl_arm64
- - windows_x64
- jobParameters:
- nameSuffix: CoreCLR_ReleaseLibraries
- buildArgs: -s clr+libs+libs.tests -rc $(_BuildConfig) -c Release /p:ArchiveTests=true
- timeoutInMinutes: 120
- postBuildSteps:
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/bin
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- displayName: Build Assets
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/helix
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: CoreCLR_ReleaseLibraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.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 }}
+ # platforms:
+ # - linux_musl_x64
+ # - windows_x86
+ # jobParameters:
+ # nameSuffix: Libraries_CheckedCoreCLR
+ # buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) -rc Checked /p:ArchiveTests=true
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.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 }}
+ # platforms:
+ # - osx_arm64
+ # jobParameters:
+ # nameSuffix: Libraries_CheckedCoreCLR
+ # buildArgs: -s clr+libs -c $(_BuildConfig) -rc Checked
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/native-test-assets-variables.yml
+ # parameters:
+ # testGroup: innerloop
+ # configOverride: Checked
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+
+ # - template: /eng/pipelines/common/platform-matrix.yml
+ # parameters:
+ # jobTemplate: /eng/pipelines/common/global-build-job.yml
+ # buildConfig: checked
+ # platforms:
+ # - linux_arm
+ # - windows_arm64
+ # - windows_x86
+ # jobParameters:
+ # nameSuffix: CoreCLR_ReleaseLibraries
+ # buildArgs: -s clr+libs -rc $(_BuildConfig) -c Release
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/native-test-assets-variables.yml
+ # parameters:
+ # testGroup: innerloop
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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: checked
+ # platforms:
+ # - linux_x64
+ # - linux_musl_arm
+ # - linux_musl_arm64
+ # - windows_x64
+ # jobParameters:
+ # nameSuffix: CoreCLR_ReleaseLibraries
+ # buildArgs: -s clr+libs+libs.tests -rc $(_BuildConfig) -c Release /p:ArchiveTests=true
+ # timeoutInMinutes: 120
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # displayName: Build Assets
+ # - template: /eng/pipelines/common/upload-artifact-step.yml
+ # parameters:
+ # rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+ # includeRootFolder: false
+ # archiveType: $(archiveType)
+ # archiveExtension: $(archiveExtension)
+ # tarCompression: $(tarCompression)
+ # artifactName: CoreCLR_ReleaseLibraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.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
- postBuildSteps:
- - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml
- parameters:
- testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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: checked
+ # platforms:
+ # - gcc_linux_x64
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: Native_GCC
+ # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml
+ # parameters:
+ # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CoreCLR and run crossgen on S.P.CoreLib
#
- - 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: checked
- runtimeFlavor: coreclr
- platforms:
- - linux_x86
- jobParameters:
- testScope: innerloop
- nameSuffix: CoreCLR
- buildArgs: -s clr.runtime+clr.jit+clr.iltools+clr.spmi+clr.corelib+clr.nativecorelib -c $(_BuildConfig)
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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: checked
+ # runtimeFlavor: coreclr
+ # platforms:
+ # - linux_x86
+ # jobParameters:
+ # testScope: innerloop
+ # nameSuffix: CoreCLR
+ # buildArgs: -s clr.runtime+clr.jit+clr.iltools+clr.spmi+clr.corelib+clr.nativecorelib -c $(_BuildConfig)
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CoreCLR as a non-portable build
#
- - 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: checked
- runtimeFlavor: coreclr
- platforms:
- - tizen_armel
- jobParameters:
- testScope: innerloop
- nameSuffix: CoreCLR_NonPortable
- buildArgs: -s clr.native+clr.tools+clr.corelib+clr.nativecorelib+clr.aot+clr.packages --targetrid tizen.9.0.0-armel -c $(_BuildConfig) /p:PortableBuild=false
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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: checked
+ # runtimeFlavor: coreclr
+ # platforms:
+ # - tizen_armel
+ # jobParameters:
+ # testScope: innerloop
+ # nameSuffix: CoreCLR_NonPortable
+ # buildArgs: -s clr.native+clr.tools+clr.corelib+clr.nativecorelib+clr.aot+clr.packages --targetrid tizen.9.0.0-armel -c $(_BuildConfig) /p:PortableBuild=false
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CoreCLR + Libs + Host
#
- - 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: ${{ variables.debugOnPrReleaseOnRolling }}
- runtimeFlavor: coreclr
- platforms:
- - freebsd_x64
- - linux_riscv64
- - linux_loongarch64
- jobParameters:
- testScope: innerloop
- nameSuffix: CoreCLR_Bootstrapped
- buildArgs: -s clr+libs+host+packs+tools.cdac -c $(_BuildConfig) -rc Checked --bootstrap
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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
+ # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ # runtimeFlavor: coreclr
+ # platforms:
+ # - freebsd_x64
+ # - linux_riscv64
+ # - linux_loongarch64
+ # jobParameters:
+ # testScope: innerloop
+ # nameSuffix: CoreCLR_Bootstrapped
+ # buildArgs: -s clr+libs+host+packs+tools.cdac -c $(_BuildConfig) -rc Checked --bootstrap
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.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: 180
- nameSuffix: NativeAOT
- buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release /p:RunAnalyzers=false
- postBuildSteps:
- - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml
- parameters:
- 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
- liveLibrariesBuildConfig: Release
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(variables['isRollingBuild'], 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: Debug
+ # platforms:
+ # - linux_x64
+ # - windows_x64
+ # variables:
+ # - name: timeoutPerTestInMinutes
+ # value: 60
+ # - name: timeoutPerTestCollectionInMinutes
+ # value: 180
+ # jobParameters:
+ # timeoutInMinutes: 180
+ # nameSuffix: NativeAOT
+ # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release /p:RunAnalyzers=false
+ # postBuildSteps:
+ # - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml
+ # parameters:
+ # 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
+ # liveLibrariesBuildConfig: Release
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
+ # eq(variables['isRollingBuild'], 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: 180
- nameSuffix: NativeAOT
- buildArgs: -s clr.aot+libs.native+libs.sfx -rc $(_BuildConfig) -lc Release /p:RunAnalyzers=false
- postBuildSteps:
- - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml
- parameters:
- creator: dotnet-bot
- testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;async;" /p:BuildNativeAotFrameworkObjects=true'
- liveLibrariesBuildConfig: Release
- testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
- parameters:
- testGroup: innerloop
- liveLibrariesBuildConfig: Release
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(variables['isRollingBuild'], 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: Checked
+ # platforms:
+ # - windows_x64
+ # variables:
+ # - name: timeoutPerTestInMinutes
+ # value: 60
+ # - name: timeoutPerTestCollectionInMinutes
+ # value: 180
+ # jobParameters:
+ # timeoutInMinutes: 180
+ # nameSuffix: NativeAOT
+ # buildArgs: -s clr.aot+libs.native+libs.sfx -rc $(_BuildConfig) -lc Release /p:RunAnalyzers=false
+ # postBuildSteps:
+ # - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;async;" /p:BuildNativeAotFrameworkObjects=true'
+ # liveLibrariesBuildConfig: Release
+ # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
+ # parameters:
+ # testGroup: innerloop
+ # liveLibrariesBuildConfig: Release
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
+ # 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
- variables:
- - name: timeoutPerTestInMinutes
- value: 60
- - name: timeoutPerTestCollectionInMinutes
- value: 180
- jobParameters:
- testGroup: innerloop
- timeoutInMinutes: 180
- nameSuffix: NativeAOT
- buildArgs: -s clr.aot+libs+tools.illink -c $(_BuildConfig) -rc $(_BuildConfig) -lc Release /p:RunAnalyzers=false
- postBuildSteps:
- - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml
- parameters:
- 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
- liveLibrariesBuildConfig: Release
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(variables['isRollingBuild'], 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
+ # variables:
+ # - name: timeoutPerTestInMinutes
+ # value: 60
+ # - name: timeoutPerTestCollectionInMinutes
+ # value: 180
+ # jobParameters:
+ # testGroup: innerloop
+ # timeoutInMinutes: 180
+ # nameSuffix: NativeAOT
+ # buildArgs: -s clr.aot+libs+tools.illink -c $(_BuildConfig) -rc $(_BuildConfig) -lc Release /p:RunAnalyzers=false
+ # postBuildSteps:
+ # - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml
+ # parameters:
+ # 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
+ # liveLibrariesBuildConfig: Release
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.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+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true /p:RunAnalyzers=false
- 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
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true /p:RunAnalyzers=false
+ # 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
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.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.sfx+clr.toolstests+tools.cdac+tools.cdactests -c $(_BuildConfig) -test
- enablePublishTestResults: true
- testResultsFormat: 'xunit'
- # We want to run AOT tests when illink changes because there's share code and tests from illink which are used by AOT
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_cdac.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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.sfx+clr.toolstests+tools.cdac+tools.cdactests -c $(_BuildConfig) -test
+ # enablePublishTestResults: true
+ # testResultsFormat: 'xunit'
+ # # We want to run AOT tests when illink changes because there's share code and tests from illink which are used by AOT
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_cdac.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build CrossDacs
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: release
- platforms:
- - windows_x64
- variables:
- - name: _archParameter
- value: -arch x64,x86,arm,arm64
- jobParameters:
- buildArgs: -s linuxdac+alpinedac -c Checked,$(_BuildConfig)
- nameSuffix: CrossDac
- isOfficialBuild: false
- timeoutInMinutes: 60
- postBuildSteps:
- - publish: $(Build.SourcesDirectory)/artifacts/bin/coreclr
- displayName: Publish CrossDacs for diagnostics
- artifact: CoreCLRCrossDacArtifacts
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
+ # buildConfig: release
+ # platforms:
+ # - windows_x64
+ # variables:
+ # - name: _archParameter
+ # value: -arch x64,x86,arm,arm64
+ # jobParameters:
+ # buildArgs: -s linuxdac+alpinedac -c Checked,$(_BuildConfig)
+ # nameSuffix: CrossDac
+ # isOfficialBuild: false
+ # timeoutInMinutes: 60
+ # postBuildSteps:
+ # - publish: $(Build.SourcesDirectory)/artifacts/bin/coreclr
+ # displayName: Publish CrossDacs for diagnostics
+ # artifact: CoreCLRCrossDacArtifacts
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
# Build Mono AOT offset headers once, for validation
# Only when mono changed
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: release
- platforms:
- - android_x64
- - browser_wasm
- - wasi_wasm
- - ios_arm64 # tvos and ios use the same offsets so we only need to build once
- - maccatalyst_x64
- variables:
- - name: _osParameter
- value: -os linux
- - name: _archParameter
- value: -arch x64
- jobParameters:
- nameSuffix: MonoAOTOffsets
- buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup) /p:ValidateMonoOffsets=true
- postBuildSteps:
- # Upload offset files
- - task: CopyFiles@2
- displayName: Collect offset files
- condition: failed()
- inputs:
- sourceFolder: '$(Build.SourcesDirectory)/src/mono/mono/offsets'
- contents: '*.h.new'
- targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/'
-
- - publish: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
- condition: failed()
- artifact: MonoAOTOffsets_$(osGroup)$(osSubGroup)
- displayName: Upload offset files
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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
+ # platforms:
+ # - android_x64
+ # - browser_wasm
+ # - wasi_wasm
+ # - ios_arm64 # tvos and ios use the same offsets so we only need to build once
+ # - maccatalyst_x64
+ # variables:
+ # - name: _osParameter
+ # value: -os linux
+ # - name: _archParameter
+ # value: -arch x64
+ # jobParameters:
+ # nameSuffix: MonoAOTOffsets
+ # buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup) /p:ValidateMonoOffsets=true
+ # postBuildSteps:
+ # # Upload offset files
+ # - task: CopyFiles@2
+ # displayName: Collect offset files
+ # condition: failed()
+ # inputs:
+ # sourceFolder: '$(Build.SourcesDirectory)/src/mono/mono/offsets'
+ # contents: '*.h.new'
+ # targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/'
+
+ # - publish: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
+ # condition: failed()
+ # artifact: MonoAOTOffsets_$(osGroup)$(osSubGroup)
+ # displayName: Upload offset files
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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_x64
- - linux_arm
- - linux_arm64
- jobParameters:
- testGroup: innerloop
- nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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
- - osx_x64
- jobParameters:
- testGroup: innerloop
- nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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:
+ # - tvossimulator_x64
+ # - linux_x64
+ # - linux_arm
+ # - linux_arm64
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: AllSubsets_Mono
+ # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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
+ # - osx_x64
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: AllSubsets_Mono
+ # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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:
- - WasmTestOnChrome
- - WasmTestOnFirefox
-
- - 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:
- - WasmTestOnChrome
+ # - template: /eng/pipelines/common/templates/wasm-library-tests.yml
+ # parameters:
+ # platforms:
+ # - browser_wasm
+ # alwaysRun: ${{ variables.isRollingBuild }}
+ # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
+ # scenarios:
+ # - WasmTestOnChrome
+ # - WasmTestOnFirefox
+
+ # - 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:
+ # - WasmTestOnChrome
# 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) /maxcpucount:2
+ # - 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) /maxcpucount:2
# AOT Library tests
- - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml
- parameters:
- platforms:
- - browser_wasm
- - browser_wasm_win
- nameSuffix: _Smoke_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
+ # - browser_wasm_win
+ # nameSuffix: _Smoke_AOT
+ # runAOT: true
+ # shouldRunSmokeOnly: true
+ # alwaysRun: ${{ variables.isRollingBuild }}
+ # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
# For Wasm.Build.Tests - runtime pack builds
- - template: /eng/pipelines/common/templates/wasm-build-only.yml
- parameters:
- platforms:
- - browser_wasm
- - browser_wasm_win
- condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true))
- nameSuffix: SingleThreaded
- extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
- publishArtifactsForWorkload: true
- publishWBT: true
-
- - template: /eng/pipelines/common/templates/wasm-build-only.yml
- parameters:
- platforms:
- - browser_wasm
- - browser_wasm_win
- condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true))
- nameSuffix: MultiThreaded
- extraBuildArgs: /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
- publishArtifactsForWorkload: true
- publishWBT: false
+ # - template: /eng/pipelines/common/templates/wasm-build-only.yml
+ # parameters:
+ # platforms:
+ # - browser_wasm
+ # - browser_wasm_win
+ # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true))
+ # nameSuffix: SingleThreaded
+ # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
+ # publishArtifactsForWorkload: true
+ # publishWBT: true
+
+ # - template: /eng/pipelines/common/templates/wasm-build-only.yml
+ # parameters:
+ # platforms:
+ # - browser_wasm
+ # - browser_wasm_win
+ # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true))
+ # nameSuffix: MultiThreaded
+ # extraBuildArgs: /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
+ # publishArtifactsForWorkload: true
+ # publishWBT: false
# Browser Wasm.Build.Tests
- - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml
- parameters:
- platforms:
- - browser_wasm
- - browser_wasm_win
- alwaysRun: ${{ variables.isRollingBuild }}
- extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
+ # - template: /eng/pipelines/common/templates/browser-wasm-build-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)
+ # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml
+ # parameters:
+ # platforms:
+ # - browser_wasm
+ # alwaysRun: ${{ variables.isRollingBuild }}
+ # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
# WASI/WASM
- - template: /eng/pipelines/common/templates/wasm-build-only.yml
- parameters:
- platforms:
- - wasi_wasm
- - wasi_wasm_win
- extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
- condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true))
- publishArtifactsForWorkload: false
- publishWBT: false
+ # - template: /eng/pipelines/common/templates/wasm-build-only.yml
+ # parameters:
+ # platforms:
+ # - wasi_wasm
+ # - wasi_wasm_win
+ # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
+ # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true))
+ # publishArtifactsForWorkload: false
+ # publishWBT: false
#
# Android devices
# 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:
- - android_arm
- - android_arm64
- variables:
- # map dependencies variables to local variables
- - name: librariesContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
- - name: monoContainsChange
- value: $[ stageDependencies.EvaluatePaths.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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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:
+ # - android_arm
+ # - android_arm64
+ # variables:
+ # # map dependencies variables to local variables
+ # - name: librariesContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ # - name: monoContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(variables['librariesContainsChange'], true),
+ # eq(variables['monoContainsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Android arm64 devices and x64 emulators
# Build the whole product using CoreCLR and run functional 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: coreclr
- platforms:
- - android_x64
- - android_arm64
- variables:
- # map dependencies variables to local variables
- - name: librariesContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
- - name: coreclrContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
- jobParameters:
- testGroup: innerloop
- nameSuffix: AllSubsets_CoreCLR
- buildArgs: -s clr.runtime+clr.alljits+clr.corelib+clr.nativecorelib+clr.tools+clr.packages+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true
- timeoutInMinutes: 180
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['coreclrContainsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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: coreclr
+ # platforms:
+ # - android_x64
+ # - android_arm64
+ # variables:
+ # # map dependencies variables to local variables
+ # - name: librariesContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ # - name: coreclrContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: AllSubsets_CoreCLR
+ # buildArgs: -s clr.runtime+clr.alljits+clr.corelib+clr.nativecorelib+clr.tools+clr.packages+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true
+ # timeoutInMinutes: 180
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(variables['librariesContainsChange'], true),
+ # eq(variables['coreclrContainsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# 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: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
- - name: monoContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
- - name: illinkContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.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=false /p:EnableAggressiveTrimming=true
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- # extra steps, run tests
- # Disable tests on ios/tvos - mono - https://github.com/dotnet/runtime/issues/121967
- # postBuildSteps:
- # - template: /eng/pipelines/libraries/helix.yml
- # parameters:
- # creator: dotnet-bot
- # testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
- # condition: >-
- # or(
- # eq(variables['librariesContainsChange'], true),
- # eq(variables['monoContainsChange'], true),
- # eq(variables['illinkContainsChange'], true),
- # eq(variables['isRollingBuild'], true))
+ # - 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: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ # - name: monoContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
+ # - name: illinkContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.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=false /p:EnableAggressiveTrimming=true
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # # extra steps, run tests
+ # # Disable tests on ios/tvos - mono - https://github.com/dotnet/runtime/issues/121967
+ # # postBuildSteps:
+ # # - template: /eng/pipelines/libraries/helix.yml
+ # # parameters:
+ # # creator: dotnet-bot
+ # # testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ # # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
+ # # condition: >-
+ # # or(
+ # # eq(variables['librariesContainsChange'], true),
+ # # eq(variables['monoContainsChange'], true),
+ # # eq(variables['illinkContainsChange'], true),
+ # # eq(variables['isRollingBuild'], true))
#
# Build the whole product using CoreCLR and run functional 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: coreclr
- platforms:
- - ios_arm64
- variables:
- # map dependencies variables to local variables
- - name: librariesContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
- - name: coreclrContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
- - name: illinkContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'] ]
- jobParameters:
- testGroup: innerloop
- nameSuffix: AllSubsets_CoreCLR
- buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true
- timeoutInMinutes: 120
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['coreclrContainsChange'], true),
- eq(variables['illinkContainsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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: coreclr
+ # platforms:
+ # - ios_arm64
+ # variables:
+ # # map dependencies variables to local variables
+ # - name: librariesContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ # - name: coreclrContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
+ # - name: illinkContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'] ]
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: AllSubsets_CoreCLR
+ # buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true
+ # timeoutInMinutes: 120
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(variables['librariesContainsChange'], true),
+ # eq(variables['coreclrContainsChange'], true),
+ # eq(variables['illinkContainsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# iOS/tvOS devices
# Build the whole product using Native AOT 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: coreclr
- platforms:
- - ios_arm64
- - tvos_arm64
- variables:
- # map dependencies variables to local variables
- - name: librariesContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
- - name: coreclrContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
- jobParameters:
- testGroup: innerloop
- nameSuffix: AllSubsets_NativeAOT
- buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true
- timeoutInMinutes: 180
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
- extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['coreclrContainsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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: coreclr
+ # platforms:
+ # - ios_arm64
+ # - tvos_arm64
+ # variables:
+ # # map dependencies variables to local variables
+ # - name: librariesContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ # - name: coreclrContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: AllSubsets_NativeAOT
+ # buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true
+ # timeoutInMinutes: 180
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
+ # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
+ # condition: >-
+ # or(
+ # eq(variables['librariesContainsChange'], true),
+ # eq(variables['coreclrContainsChange'], 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
- - maccatalyst_arm64
- variables:
- # map dependencies variables to local variables
- - name: librariesContainsChange
- value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
- - name: monoContainsChange
- value: $[ stageDependencies.EvaluatePaths.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
- timeoutInMinutes: 180
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- 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
+ # - maccatalyst_arm64
+ # variables:
+ # # map dependencies variables to local variables
+ # - name: librariesContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ # - name: monoContainsChange
+ # value: $[ stageDependencies.EvaluatePaths.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
+ # timeoutInMinutes: 180
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # 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 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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_x64
+ # - linux_arm64
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: AllSubsets_Mono_LLVMAOT
+ # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
+ # /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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/common/global-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:
- nameSuffix: Mono_Runtime
- buildArgs: -s mono -c $(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.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
+ # runtimeFlavor: mono
+ # buildConfig: debug
+ # platforms:
+ # - osx_x64
+ # - osx_arm64
+ # - linux_x64
+ # - linux_arm64
+ # # - linux_musl_arm64
+ # - windows_x64
+ # - windows_x86
+ # # - windows_arm64
+ # jobParameters:
+ # nameSuffix: Mono_Runtime
+ # buildArgs: -s mono -c $(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
- runtimeFlavor: mono
- buildConfig: release
- platforms:
- - linux_x64
- - linux_musl_x64
- - linux_arm64
- - linux_musl_arm64
- - windows_arm64
- - windows_x64
- - osx_x64
- - osx_arm64
- jobParameters:
- buildArgs: -c $(_BuildConfig) /p:DotNetBuildMonoCrossAOT=true
- nameSuffix: CrossAOT_Mono
- runtimeVariant: crossaot
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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
+ # runtimeFlavor: mono
+ # buildConfig: release
+ # platforms:
+ # - linux_x64
+ # - linux_musl_x64
+ # - linux_arm64
+ # - linux_musl_arm64
+ # - windows_arm64
+ # - windows_x64
+ # - osx_x64
+ # - osx_arm64
+ # jobParameters:
+ # buildArgs: -c $(_BuildConfig) /p:DotNetBuildMonoCrossAOT=true
+ # nameSuffix: CrossAOT_Mono
+ # runtimeVariant: crossaot
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build and test libraries for .NET Framework
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: Release
- platforms:
- - windows_x86
- helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
- jobParameters:
- framework: net481
- buildArgs: -s tools+libs+libs.tests -framework net481 -c $(_BuildConfig) -testscope innerloop /p:ArchiveTests=true
- nameSuffix: Libraries_NET481
- timeoutInMinutes: 150
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: NET481_$(_BuildConfig)
- extraHelixArguments: /p:BuildTargetFramework=net481
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - template: /eng/pipelines/common/platform-matrix.yml
+ # parameters:
+ # jobTemplate: /eng/pipelines/common/global-build-job.yml
+ # buildConfig: Release
+ # platforms:
+ # - windows_x86
+ # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ # jobParameters:
+ # framework: net481
+ # buildArgs: -s tools+libs+libs.tests -framework net481 -c $(_BuildConfig) -testscope innerloop /p:ArchiveTests=true
+ # nameSuffix: Libraries_NET481
+ # timeoutInMinutes: 150
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: NET481_$(_BuildConfig)
+ # extraHelixArguments: /p:BuildTargetFramework=net481
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build and test libraries for all TFMs and create packages
#
- - template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- platforms:
- - windows_x64
- jobParameters:
- buildArgs: -test -s tools.illink+libs+libs.tests -pack -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true
- nameSuffix: Libraries_WithPackages
- timeoutInMinutes: 150
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.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 }}
+ # platforms:
+ # - windows_x64
+ # jobParameters:
+ # buildArgs: -test -s tools.illink+libs+libs.tests -pack -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true
+ # nameSuffix: Libraries_WithPackages
+ # timeoutInMinutes: 150
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
- buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- platforms:
- - windows_x86
- - osx_arm64
- helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml
- jobParameters:
- nameSuffix: Installer_Build_And_Test
- buildArgs: -s host+packs -c $(_BuildConfig) -lc Release -rc Release
- dependsOnGlobalBuilds:
- - nameSuffix: CoreCLR_Libraries
- buildConfig: release
- preBuildSteps:
- - template: /eng/pipelines/common/download-artifact-step.yml
- parameters:
- artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release
- artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release$(archiveExtension)
- unpackFolder: $(Build.SourcesDirectory)/artifacts/bin
- displayName: 'unified artifacts'
- timeoutInMinutes: 150
- postBuildSteps:
- - template: /eng/pipelines/installer/helix.yml
- parameters:
- creator: dotnet-bot
- condition:
- or(
- eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
- buildConfig: release
- platforms:
- - windows_x64
- - osx_x64
- - linux_x64
- helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml
- jobParameters:
- nameSuffix: Installer_Build_And_Test
- buildArgs: -s host+packs -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} -rc Release
- dependsOnGlobalBuilds:
- - nameSuffix: CoreCLR_Libraries
- buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- preBuildSteps:
- - template: /eng/pipelines/common/download-artifact-step.yml
- parameters:
- artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
- artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)$(archiveExtension)
- unpackFolder: $(Build.SourcesDirectory)/artifacts/bin
- displayName: 'unified artifacts'
- timeoutInMinutes: 150
- postBuildSteps:
- - template: /eng/pipelines/installer/helix.yml
- parameters:
- creator: dotnet-bot
- condition:
- or(
- eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
+ # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ # platforms:
+ # - windows_x86
+ # - osx_arm64
+ # helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml
+ # jobParameters:
+ # nameSuffix: Installer_Build_And_Test
+ # buildArgs: -s host+packs -c $(_BuildConfig) -lc Release -rc Release
+ # dependsOnGlobalBuilds:
+ # - nameSuffix: CoreCLR_Libraries
+ # buildConfig: release
+ # preBuildSteps:
+ # - template: /eng/pipelines/common/download-artifact-step.yml
+ # parameters:
+ # artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release
+ # artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release$(archiveExtension)
+ # unpackFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # displayName: 'unified artifacts'
+ # timeoutInMinutes: 150
+ # postBuildSteps:
+ # - template: /eng/pipelines/installer/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # condition:
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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/common/global-build-job.yml
+ # buildConfig: release
+ # platforms:
+ # - windows_x64
+ # - osx_x64
+ # - linux_x64
+ # helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml
+ # jobParameters:
+ # nameSuffix: Installer_Build_And_Test
+ # buildArgs: -s host+packs -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} -rc Release
+ # dependsOnGlobalBuilds:
+ # - nameSuffix: CoreCLR_Libraries
+ # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ # preBuildSteps:
+ # - template: /eng/pipelines/common/download-artifact-step.yml
+ # parameters:
+ # artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
+ # artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)$(archiveExtension)
+ # unpackFolder: $(Build.SourcesDirectory)/artifacts/bin
+ # displayName: 'unified artifacts'
+ # timeoutInMinutes: 150
+ # postBuildSteps:
+ # - template: /eng/pipelines/installer/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # condition:
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.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(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(variables['isRollingBuild'], true))
-
- postBuildSteps:
- - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_Release
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
+ # - 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(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: Mono_Release
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
#
# 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:
- - windows_x64
- 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 -lc ${{ variables.debugOnPrReleaseOnRolling }}
- timeoutInMinutes: 180
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(variables['isRollingBuild'], true))
-
- postBuildSteps:
- - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_Release
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
- parameters:
- liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ # - 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:
+ # - windows_x64
+ # 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 -lc ${{ variables.debugOnPrReleaseOnRolling }}
+ # timeoutInMinutes: 180
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: Mono_Release
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
+ # parameters:
+ # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
#
# 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(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- postBuildSteps:
- - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_Release
- extraVariablesTemplates:
- - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
+ # - 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(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
+ # parameters:
+ # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
- timeoutInMinutes: 180
-
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(variables['isRollingBuild'], true))
- postBuildSteps:
- - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
- parameters:
- 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/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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
+ # timeoutInMinutes: 180
+
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # llvmAotStepContainer: linux_x64_llvmaot
+ # testRunNamePrefixSuffix: Mono_Release
+ # extraVariablesTemplates:
+ # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
#
# CoreCLR Test builds using live libraries release build
@@ -1564,36 +1564,36 @@ extends:
# 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
- unifiedArtifactsName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- unifiedBuildNameSuffix: CoreCLR_ReleaseLibraries
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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:
+ # - linux_arm
+ # - windows_x86
+ # - windows_arm64
+ # helixQueueGroup: pr
+ # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ # jobParameters:
+ # testGroup: innerloop
+ # liveLibrariesBuildConfig: Release
+ # unifiedArtifactsName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # unifiedBuildNameSuffix: CoreCLR_ReleaseLibraries
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.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
+ # - osx_x64
- linux_x64
- linux_arm64
- - windows_x64
+ # - windows_x64
helixQueueGroup: pr
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
jobParameters:
@@ -1608,74 +1608,74 @@ extends:
eq(stageDependencies.EvaluatePaths.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 }}
- unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
- unifiedBuildNameSuffix: Libraries_CheckedCoreCLR
- unifiedBuildConfigOverride: ${{ variables.debugOnPrReleaseOnRolling }}
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.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 }}
+ # unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
+ # unifiedBuildNameSuffix: Libraries_CheckedCoreCLR
+ # unifiedBuildConfigOverride: ${{ variables.debugOnPrReleaseOnRolling }}
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.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
- unifiedArtifactsName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- helixArtifactsName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- unifiedBuildNameSuffix: CoreCLR_Libraries
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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
+ # unifiedArtifactsName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # helixArtifactsName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # unifiedBuildNameSuffix: CoreCLR_Libraries
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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
- unifiedArtifactsName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
- helixArtifactsName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
- unifiedBuildNameSuffix: CoreCLR_Libraries
- unifiedBuildConfigOverride: ${{ variables.debugOnPrReleaseOnRolling }}
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.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:
+ # - windows_x64
+ # - osx_x64
+ # - linux_x64
+ # - linux_musl_x64
+ # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ # jobParameters:
+ # isOfficialBuild: false
+ # testScope: innerloop
+ # liveRuntimeBuildConfig: release
+ # unifiedArtifactsName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
+ # helixArtifactsName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)
+ # unifiedBuildNameSuffix: CoreCLR_Libraries
+ # unifiedBuildConfigOverride: ${{ variables.debugOnPrReleaseOnRolling }}
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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.
@@ -1695,159 +1695,159 @@ extends:
# 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
- unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- helixArtifactsName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- unifiedBuildNameSuffix: Libraries_CheckedCoreCLR
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.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:
+ # - linux_arm64
+ # - windows_x86
+ # - linux_musl_x64
+ # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ # helixQueueGroup: libraries
+ # jobParameters:
+ # testScope: innerloop
+ # liveRuntimeBuildConfig: checked
+ # unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # helixArtifactsName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # unifiedBuildNameSuffix: Libraries_CheckedCoreCLR
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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
- unifiedArtifactsName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked
- helixArtifactsName: CoreCLR_ReleaseLibraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked
- unifiedBuildNameSuffix: CoreCLR_ReleaseLibraries
- unifiedBuildConfigOverride: checked
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.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
- unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- helixArtifactsName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
- unifiedBuildNameSuffix: Libraries_CheckedCoreCLR
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(variables['isRollingBuild'], true))
+ # - 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
+ # unifiedArtifactsName: CoreCLR_ReleaseLibraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked
+ # helixArtifactsName: CoreCLR_ReleaseLibraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked
+ # unifiedBuildNameSuffix: CoreCLR_ReleaseLibraries
+ # unifiedBuildConfigOverride: checked
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.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
+ # unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # helixArtifactsName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ # unifiedBuildNameSuffix: Libraries_CheckedCoreCLR
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build and test Mono Interpreter with the libraries testss
#
- - 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: ${{ variables.debugOnPrReleaseOnRolling }}
- runtimeFlavor: mono
- runtimeVariant: monointerpreter
- platforms:
- - linux_x64
- #- osx_x64
- #- windows_x64
- jobParameters:
- testGroup: innerloop
- nameSuffix: Mono_Interpreter_LibrariesTests
- buildArgs: -s mono+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true
- timeoutInMinutes: 480
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_Interpreter_$(_BuildConfig)
- interpreter: true
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.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
+ # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ # runtimeFlavor: mono
+ # runtimeVariant: monointerpreter
+ # platforms:
+ # - linux_x64
+ # #- osx_x64
+ # #- windows_x64
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: Mono_Interpreter_LibrariesTests
+ # buildArgs: -s mono+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true
+ # timeoutInMinutes: 480
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: Mono_Interpreter_$(_BuildConfig)
+ # interpreter: true
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
#
# Build and test Mono Minijit with the libraries testss
#
- - 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: ${{ variables.debugOnPrReleaseOnRolling }}
- runtimeFlavor: mono
- platforms:
- - linux_arm64
- - linux_x64
- - osx_x64
- #- windows_x64
- jobParameters:
- testGroup: innerloop
- nameSuffix: Mono_MiniJIT_LibrariesTests
- buildArgs: -s mono+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true
- timeoutInMinutes: 480
- # extra steps, run tests
- postBuildSteps:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_Minijit_$(_BuildConfig)
- condition: >-
- or(
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(variables['isRollingBuild'], true))
-
- - stage: SourceBuild
- displayName: Source Build Validation
- dependsOn: []
- condition: eq(variables['isRollingBuild'], true)
- jobs:
- #
- # Sourcebuild legs
- # We have 3 important legs for source-build:
- # - Centos.9 (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.9 in rolling CI,
- # Run Linux-x64 in PR.
- - template: /eng/common/templates/jobs/source-build.yml
- parameters:
- platforms:
- - name: CentOS9
- targetRID: centos.9-x64
- portableBuild: false
- container: SourceBuild_centos_x64
- - name: NonexistentRID
- targetRID: banana.24-x64
- portableBuild: false
- container: SourceBuild_centos_x64
+ # - 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: ${{ variables.debugOnPrReleaseOnRolling }}
+ # runtimeFlavor: mono
+ # platforms:
+ # - linux_arm64
+ # - linux_x64
+ # - osx_x64
+ # #- windows_x64
+ # jobParameters:
+ # testGroup: innerloop
+ # nameSuffix: Mono_MiniJIT_LibrariesTests
+ # buildArgs: -s mono+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true
+ # timeoutInMinutes: 480
+ # # extra steps, run tests
+ # postBuildSteps:
+ # - template: /eng/pipelines/libraries/helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: Mono_Minijit_$(_BuildConfig)
+ # condition: >-
+ # or(
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ # eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ # eq(variables['isRollingBuild'], true))
+
+ # - stage: SourceBuild
+ # displayName: Source Build Validation
+ # dependsOn: []
+ # condition: eq(variables['isRollingBuild'], true)
+ # jobs:
+ # #
+ # # Sourcebuild legs
+ # # We have 3 important legs for source-build:
+ # # - Centos.9 (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.9 in rolling CI,
+ # # Run Linux-x64 in PR.
+ # - template: /eng/common/templates/jobs/source-build.yml
+ # parameters:
+ # platforms:
+ # - name: CentOS9
+ # targetRID: centos.9-x64
+ # portableBuild: false
+ # container: SourceBuild_centos_x64
+ # - name: NonexistentRID
+ # targetRID: banana.24-x64
+ # portableBuild: false
+ # container: SourceBuild_centos_x64
diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj
index fa4ecc1faf92e4..ffc20a800b7f7c 100644
--- a/src/tests/Common/helixpublishwitharcade.proj
+++ b/src/tests/Common/helixpublishwitharcade.proj
@@ -412,12 +412,28 @@
$(XUnitLogCheckerHelixPath)XUnitLogChecker$(ExeSuffix) $(XUnitLogCheckerArgs)
+
+ <_ExtraTestExecutablesListFiles Remote="@(_ExtraTestExecutablesListFiles)" />
+ <_ExtraTestExecutablesListFiles Include="@(_MergedPayloadFiles)"
+ Condition="$([System.String]::Copy('%(Identity)').ToLower().EndsWith('helix-extra-executables.list'))" />
+ <_ExtraTestExecutables Remove="@(_ExtraTestExecutables)" />
+
+
+
+
+
+ <_ExtraTestExecutables Remove="@(_ExtraTestExecutables)" Condition="'%(Identity)' == ''" />
+
+
+
+
+
@@ -458,6 +474,7 @@
+
diff --git a/src/tests/build.proj b/src/tests/build.proj
index 8ba1b4eb2f3ed6..c2f21ca2877dc5 100644
--- a/src/tests/build.proj
+++ b/src/tests/build.proj
@@ -40,6 +40,7 @@
+
diff --git a/src/tests/tracing/userevents/basic/basic.cs b/src/tests/tracing/userevents/basic/basic.cs
new file mode 100644
index 00000000000000..544ac1e01c4d3d
--- /dev/null
+++ b/src/tests/tracing/userevents/basic/basic.cs
@@ -0,0 +1,61 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Diagnostics;
+using System.Threading;
+using Tracing.UserEvents.Tests.Common;
+using Microsoft.Diagnostics.Tracing;
+
+namespace Tracing.UserEvents.Tests.Basic
+{
+ public class Basic
+ {
+ private static byte[] s_array;
+
+ public static int BasicTracee()
+ {
+ long startTimestamp = Stopwatch.GetTimestamp();
+ long targetTicks = Stopwatch.Frequency; // 1s
+
+ while (Stopwatch.GetTimestamp() - startTimestamp < targetTicks)
+ {
+ s_array = new byte[1024 * 100];
+ Thread.Sleep(100);
+ }
+
+ return 100;
+ }
+
+ private static Func s_traceValidator = (source) =>
+ {
+ bool allocationSampledEventFound = false;
+
+ source.Dynamic.All += (TraceEvent e) =>
+ {
+ if (e.ProviderName == "Microsoft-Windows-DotNETRuntime")
+ {
+ // TraceEvent's ClrTraceEventParser does not know about the AllocationSampled Event, so it shows up as "Unknown(303)"
+ if (e.EventName.StartsWith("Unknown") && e.ID == (TraceEventID)303)
+ {
+ allocationSampledEventFound = true;
+ }
+ }
+ };
+
+ source.Process();
+ return allocationSampledEventFound;
+ };
+
+ public static int Main(string[] args)
+ {
+ if (args.Length > 0 && args[0].Equals("tracee", System.StringComparison.OrdinalIgnoreCase))
+ {
+ return BasicTracee();
+ }
+
+ return UserEventsTestRunner.Run("basic", typeof(Basic).Assembly.Location, s_traceValidator);
+ }
+ }
+}
+
diff --git a/src/tests/tracing/userevents/basic/basic.csproj b/src/tests/tracing/userevents/basic/basic.csproj
new file mode 100644
index 00000000000000..6e47928f023a62
--- /dev/null
+++ b/src/tests/tracing/userevents/basic/basic.csproj
@@ -0,0 +1,19 @@
+
+
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+
+ Always
+ basic.script
+
+
+
diff --git a/src/tests/tracing/userevents/basic/basic.script b/src/tests/tracing/userevents/basic/basic.script
new file mode 100644
index 00000000000000..d6ac4f6ee89060
--- /dev/null
+++ b/src/tests/tracing/userevents/basic/basic.script
@@ -0,0 +1,2 @@
+let Microsoft_Windows_DotNETRuntime_flags = new_dotnet_provider_flags();
+record_dotnet_provider("Microsoft-Windows-DotNETRuntime", 0x80000000000, 4, Microsoft_Windows_DotNETRuntime_flags);
diff --git a/src/tests/tracing/userevents/common/NuGet.config b/src/tests/tracing/userevents/common/NuGet.config
new file mode 100644
index 00000000000000..583af9d11bb787
--- /dev/null
+++ b/src/tests/tracing/userevents/common/NuGet.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/tests/tracing/userevents/common/UserEventsRequirements.cs b/src/tests/tracing/userevents/common/UserEventsRequirements.cs
new file mode 100644
index 00000000000000..7f210f1e1d7e57
--- /dev/null
+++ b/src/tests/tracing/userevents/common/UserEventsRequirements.cs
@@ -0,0 +1,185 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Diagnostics;
+using System.IO;
+
+namespace Tracing.UserEvents.Tests.Common
+{
+ internal static class UserEventsRequirements
+ {
+ private static readonly Version s_minKernelVersion = new(6, 4);
+ private const string TracefsPath = "/sys/kernel/tracing";
+ private const string UserEventsDataPath = "/sys/kernel/tracing/user_events_data";
+ private static readonly Version s_minGlibcVersion = new(2, 35);
+
+ internal static bool IsSupported()
+ {
+ if (Environment.OSVersion.Version < s_minKernelVersion)
+ {
+ Console.WriteLine($"Kernel version '{Environment.OSVersion.Version}' is less than the minimum required '{s_minKernelVersion}'");
+ return false;
+ }
+
+ return IsGlibcAtLeast(s_minGlibcVersion) &&
+ IsTracefsMounted() &&
+ IsUserEventsDataAvailable();
+ }
+
+ private static bool IsTracefsMounted()
+ {
+ ProcessStartInfo checkTracefsStartInfo = new();
+ checkTracefsStartInfo.FileName = "sudo";
+ checkTracefsStartInfo.Arguments = $"-n test -d {TracefsPath}";
+ checkTracefsStartInfo.UseShellExecute = false;
+ checkTracefsStartInfo.RedirectStandardOutput = true;
+ checkTracefsStartInfo.RedirectStandardError = true;
+
+ using Process checkTracefs = new() { StartInfo = checkTracefsStartInfo };
+ checkTracefs.OutputDataReceived += (_, e) =>
+ {
+ if (!string.IsNullOrEmpty(e.Data))
+ {
+ Console.WriteLine($"[tracefs-check] {e.Data}");
+ }
+ };
+ checkTracefs.ErrorDataReceived += (_, e) =>
+ {
+ if (!string.IsNullOrEmpty(e.Data))
+ {
+ Console.Error.WriteLine($"[tracefs-check] {e.Data}");
+ }
+ };
+
+ checkTracefs.Start();
+ checkTracefs.BeginOutputReadLine();
+ checkTracefs.BeginErrorReadLine();
+ checkTracefs.WaitForExit();
+ if (checkTracefs.ExitCode == 0)
+ {
+ return true;
+ }
+
+ Console.WriteLine($"Tracefs not mounted at '{TracefsPath}'.");
+ return false;
+ }
+
+ private static bool IsUserEventsDataAvailable()
+ {
+ ProcessStartInfo checkUserEventsDataStartInfo = new();
+ checkUserEventsDataStartInfo.FileName = "sudo";
+ checkUserEventsDataStartInfo.Arguments = $"-n test -e {UserEventsDataPath}";
+ checkUserEventsDataStartInfo.UseShellExecute = false;
+ checkUserEventsDataStartInfo.RedirectStandardOutput = true;
+ checkUserEventsDataStartInfo.RedirectStandardError = true;
+
+ using Process checkUserEventsData = new() { StartInfo = checkUserEventsDataStartInfo };
+ checkUserEventsData.OutputDataReceived += (_, e) =>
+ {
+ if (!string.IsNullOrEmpty(e.Data))
+ {
+ Console.WriteLine($"[user-events-check] {e.Data}");
+ }
+ };
+ checkUserEventsData.ErrorDataReceived += (_, e) =>
+ {
+ if (!string.IsNullOrEmpty(e.Data))
+ {
+ Console.Error.WriteLine($"[user-events-check] {e.Data}");
+ }
+ };
+
+ checkUserEventsData.Start();
+ checkUserEventsData.BeginOutputReadLine();
+ checkUserEventsData.BeginErrorReadLine();
+ checkUserEventsData.WaitForExit();
+ if (checkUserEventsData.ExitCode == 0)
+ {
+ return true;
+ }
+
+ Console.WriteLine($"User events data not available at '{UserEventsDataPath}'.");
+ return false;
+ }
+
+ private static bool IsGlibcAtLeast(Version minVersion)
+ {
+ ProcessStartInfo lddStartInfo = new();
+ lddStartInfo.FileName = "ldd";
+ lddStartInfo.Arguments = "--version";
+ lddStartInfo.UseShellExecute = false;
+ lddStartInfo.RedirectStandardOutput = true;
+ lddStartInfo.RedirectStandardError = true;
+
+ using Process lddProcess = new() { StartInfo = lddStartInfo };
+ string? detectedVersionLine = null;
+
+ lddProcess.OutputDataReceived += (_, e) =>
+ {
+ if (!string.IsNullOrEmpty(e.Data) && detectedVersionLine is null)
+ {
+ detectedVersionLine = e.Data;
+ }
+ };
+ lddProcess.ErrorDataReceived += (_, e) =>
+ {
+ if (!string.IsNullOrEmpty(e.Data))
+ {
+ Console.Error.WriteLine($"[ldd] {e.Data}");
+ }
+ };
+
+ try
+ {
+ lddProcess.Start();
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Failed to start 'ldd --version': {ex.Message}");
+ return false;
+ }
+
+ lddProcess.BeginOutputReadLine();
+ lddProcess.BeginErrorReadLine();
+ lddProcess.WaitForExit();
+
+ if (lddProcess.ExitCode != 0)
+ {
+ Console.WriteLine($"'ldd --version' exited with code {lddProcess.ExitCode}.");
+ return false;
+ }
+
+ if (string.IsNullOrEmpty(detectedVersionLine))
+ {
+ Console.WriteLine("Could not read glibc version from 'ldd --version' output.");
+ return false;
+ }
+
+ string[] tokens = detectedVersionLine.Split(' ', StringSplitOptions.RemoveEmptyEntries);
+ Version? glibcVersion = null;
+ foreach (string token in tokens)
+ {
+ if (Version.TryParse(token, out Version? parsedVersion))
+ {
+ glibcVersion = parsedVersion;
+ break;
+ }
+ }
+
+ if (glibcVersion is null)
+ {
+ Console.WriteLine($"Failed to parse glibc version from 'ldd --version' output line: {detectedVersionLine}");
+ return false;
+ }
+
+ if (glibcVersion < minVersion)
+ {
+ Console.WriteLine($"glibc version '{glibcVersion}' is less than required '{minVersion}'.");
+ return false;
+ }
+
+ return true;
+ }
+ }
+}
diff --git a/src/tests/tracing/userevents/common/UserEventsTestRunner.cs b/src/tests/tracing/userevents/common/UserEventsTestRunner.cs
new file mode 100644
index 00000000000000..4367a571db5596
--- /dev/null
+++ b/src/tests/tracing/userevents/common/UserEventsTestRunner.cs
@@ -0,0 +1,208 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Threading;
+using Microsoft.Diagnostics.Tracing;
+
+namespace Tracing.UserEvents.Tests.Common
+{
+ public class UserEventsTestRunner
+ {
+ private const int SIGINT = 2;
+ private const int DefaultTraceeExitTimeoutMs = 5000;
+ private const int DefaultRecordTraceExitTimeoutMs = 20000;
+
+ [DllImport("libc", EntryPoint = "kill", SetLastError = true)]
+ private static extern int Kill(int pid, int sig);
+
+ public static int Run(
+ string scenarioName,
+ string traceeAssemblyPath,
+ Func traceValidator,
+ int traceeExitTimeout = DefaultTraceeExitTimeoutMs,
+ int recordTraceExitTimeout = DefaultRecordTraceExitTimeoutMs)
+ {
+ string userEventsScenarioDir = Path.GetDirectoryName(traceeAssemblyPath);
+ string recordTracePath = ResolveRecordTracePath(userEventsScenarioDir);
+ string scriptFilePath = Path.Combine(userEventsScenarioDir, $"{scenarioName}.script");
+
+ if (!UserEventsRequirements.IsSupported())
+ {
+ Console.WriteLine("Skipping test: environment does not support user events.");
+ return 100;
+ }
+ if (!File.Exists(recordTracePath))
+ {
+ Console.Error.WriteLine($"record-trace not found at `{recordTracePath}`. Test cannot run.");
+ return -1;
+ }
+ if (!File.Exists(scriptFilePath))
+ {
+ Console.Error.WriteLine($"record-trace script-file not found at `{scriptFilePath}`. Test cannot run.");
+ return -1;
+ }
+
+ string traceFilePath = Path.GetTempFileName();
+ // In the past, it's been observed that record-trace has trouble overwriting newly created temp files
+ // in `/tmp` (e.g. mktemp or Path.GetTempFileName). It's suspected to be a permissions issue.
+ // As a workaround, deleting the temp file and allowing record-trace to create it works reliably.
+ File.Delete(traceFilePath);
+ traceFilePath = Path.ChangeExtension(traceFilePath, ".nettrace");
+
+ ProcessStartInfo recordTraceStartInfo = new();
+ recordTraceStartInfo.FileName = "sudo";
+ recordTraceStartInfo.Arguments = $"-n {recordTracePath} --script-file {scriptFilePath} --out {traceFilePath}";
+ recordTraceStartInfo.WorkingDirectory = userEventsScenarioDir;
+ recordTraceStartInfo.UseShellExecute = false;
+ recordTraceStartInfo.RedirectStandardOutput = true;
+ recordTraceStartInfo.RedirectStandardError = true;
+
+ Console.WriteLine($"Starting record-trace: {recordTraceStartInfo.FileName} {recordTraceStartInfo.Arguments}");
+ using Process recordTraceProcess = Process.Start(recordTraceStartInfo);
+ recordTraceProcess.OutputDataReceived += (_, args) =>
+ {
+ if (!string.IsNullOrEmpty(args.Data))
+ {
+ Console.WriteLine($"[record-trace] {args.Data}");
+ }
+ };
+ recordTraceProcess.BeginOutputReadLine();
+ recordTraceProcess.ErrorDataReceived += (_, args) =>
+ {
+ if (!string.IsNullOrEmpty(args.Data))
+ {
+ Console.Error.WriteLine($"[record-trace] {args.Data}");
+ }
+ };
+ recordTraceProcess.BeginErrorReadLine();
+ Console.WriteLine($"record-trace started with PID: {recordTraceProcess.Id}");
+
+ ProcessStartInfo traceeStartInfo = new();
+ traceeStartInfo.FileName = Process.GetCurrentProcess().MainModule.FileName;
+ traceeStartInfo.Arguments = $"{traceeAssemblyPath} tracee";
+ traceeStartInfo.WorkingDirectory = userEventsScenarioDir;
+ traceeStartInfo.RedirectStandardOutput = true;
+ traceeStartInfo.RedirectStandardError = true;
+
+ // record-trace currently only searches /tmp/ for diagnostic ports https://github.com/microsoft/one-collect/issues/183
+ string diagnosticPortDir = "/tmp/";
+ traceeStartInfo.Environment["TMPDIR"] = diagnosticPortDir;
+
+ Console.WriteLine($"Starting tracee process: {traceeStartInfo.FileName} {traceeStartInfo.Arguments}");
+ using Process traceeProcess = Process.Start(traceeStartInfo);
+ int traceePid = traceeProcess.Id;
+ Console.WriteLine($"Tracee process started with PID: {traceePid}");
+ traceeProcess.OutputDataReceived += (_, args) =>
+ {
+ if (!string.IsNullOrEmpty(args.Data))
+ {
+ Console.WriteLine($"[tracee] {args.Data}");
+ }
+ };
+ traceeProcess.BeginOutputReadLine();
+ traceeProcess.ErrorDataReceived += (_, args) =>
+ {
+ if (!string.IsNullOrEmpty(args.Data))
+ {
+ Console.Error.WriteLine($"[tracee] {args.Data}");
+ }
+ };
+ traceeProcess.BeginErrorReadLine();
+
+ Console.WriteLine($"Waiting for tracee process to exit...");
+ if (!traceeProcess.HasExited && !traceeProcess.WaitForExit(traceeExitTimeout))
+ {
+ Console.WriteLine($"Tracee process did not exit within the 5s timeout, killing it.");
+ traceeProcess.Kill();
+ }
+ traceeProcess.WaitForExit(); // flush async output
+
+ // TMPDIR is configured on Helix, but the diagnostic port was created outside of helix's default temp datadisk path.
+ // The diagnostic port should be automatically cleaned up when the tracee shutsdown, but just in case of an
+ // abrupt exit, ensure cleanup to avoid leaving artifacts on helix machines.
+ // When https://github.com/microsoft/one-collect/issues/183 is fixed, this and the above TMPDIR should be removed.
+ CleanupTraceeDiagnosticPorts(diagnosticPortDir, traceePid);
+
+ if (!recordTraceProcess.HasExited)
+ {
+ // Until record-trace supports duration, the only way to stop it is to send SIGINT (ctrl+c)
+ Console.WriteLine($"Stopping record-trace with SIGINT.");
+ Kill(recordTraceProcess.Id, SIGINT);
+ Console.WriteLine($"Waiting for record-trace to exit...");
+ if (!recordTraceProcess.WaitForExit(recordTraceExitTimeout))
+ {
+ // record-trace needs to stop gracefully to generate the trace file
+ Console.WriteLine($"record-trace did not exit within the 20s timeout, killing it.");
+ recordTraceProcess.Kill();
+ }
+ }
+ else
+ {
+ Console.WriteLine($"record-trace unexpectedly exited without SIGINT with code {recordTraceProcess.ExitCode}.");
+ }
+ recordTraceProcess.WaitForExit(); // flush async output
+
+ if (!File.Exists(traceFilePath))
+ {
+ Console.Error.WriteLine($"Expected trace file not found at `{traceFilePath}`");
+ return -1;
+ }
+
+ using EventPipeEventSource source = new EventPipeEventSource(traceFilePath);
+ if (!traceValidator(source))
+ {
+ Console.Error.WriteLine($"Trace file `{traceFilePath}` does not contain expected events.");
+ UploadTraceFile(traceFilePath, scenarioName);
+ return -1;
+ }
+
+ return 100;
+ }
+
+ private static string ResolveRecordTracePath(string userEventsScenarioDir)
+ {
+ // scenario dir: .../tracing/userevents//
+ string usereventsRoot = Path.GetFullPath(Path.Combine(userEventsScenarioDir, "..", ".."));
+ // common dir: .../tracing/userevents/common/userevents_common
+ string commonDir = Path.Combine(usereventsRoot, "common", "userevents_common");
+ string recordTracePath = Path.Combine(commonDir, "record-trace");
+ return recordTracePath;
+ }
+
+ private static void CleanupTraceeDiagnosticPorts(string diagnosticPortDir, int traceePid)
+ {
+ try
+ {
+ string[] udsFiles = Directory.GetFiles(diagnosticPortDir, $"dotnet-diagnostic-{traceePid}-*-socket");
+ foreach (string udsFile in udsFiles)
+ {
+ Console.WriteLine($"Deleting tracee diagnostic port UDS file: {udsFile}");
+ File.Delete(udsFile);
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.Error.WriteLine($"Failed to cleanup tracee diagnostic ports: {ex}");
+ }
+ }
+
+ private static void UploadTraceFile(string traceFilePath, string scenarioName)
+ {
+ var helixWorkItemDirectory = Environment.GetEnvironmentVariable("HELIX_WORKITEM_UPLOAD_ROOT");
+ if (helixWorkItemDirectory != null && Directory.Exists(helixWorkItemDirectory))
+ {
+ var destPath = Path.Combine(helixWorkItemDirectory, $"{scenarioName}.nettrace");
+ Console.WriteLine($"Uploading trace file to Helix work item directory: {destPath}");
+ File.Copy(traceFilePath, destPath, overwrite: true);
+ }
+ else
+ {
+ Console.WriteLine($"Helix work item directory not found. Trace file remains at: {traceFilePath}");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/tests/tracing/userevents/common/userevents_common.csproj b/src/tests/tracing/userevents/common/userevents_common.csproj
new file mode 100644
index 00000000000000..b455aab5b22160
--- /dev/null
+++ b/src/tests/tracing/userevents/common/userevents_common.csproj
@@ -0,0 +1,41 @@
+
+
+ BuildOnly
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_DestDir>$(TargetDir)
+ <_DestDir Condition="'$(_DestDir)' == ''">$(OutputPath)
+ <_RecordTraceSource>$(NuGetPackageRoot)microsoft.onecollect.recordtrace/$(MicrosoftOneCollectRecordTraceVersion)/runtimes/linux-$(TargetArchitecture)/native/record-trace
+ <_RecordTraceRelative Condition="$(BuildProjectRelativeDir) != ''">$(BuildProjectRelativeDir)record-trace
+ <_RecordTraceRelative Condition="'$(_RecordTraceRelative)' == ''">$([System.IO.Path]::GetRelativePath('$(TestBinDir)', '$(_DestDir)record-trace'))
+
+
+
+
+
+
+
+
+
+
+
+
+
+