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')) + + + + + + + + + + + + + +