From 828e3c60e301c30590c16e9a2f8c8e7298725d61 Mon Sep 17 00:00:00 2001
From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com>
Date: Mon, 4 May 2026 20:30:18 +0100
Subject: [PATCH 1/2] Add MachO composite Crossgen2 test jobs for OSX and plumb
crossgen2OutputFormat param through pipelines
---
.../build-runtime-tests-and-send-to-helix.yml | 2 ++
.../common/templates/runtimes/run-test-job.yml | 5 +++++
.../templates/runtimes/send-to-helix-step.yml | 2 ++
eng/pipelines/coreclr/crossgen2-composite.yml | 17 +++++++++++++++++
eng/pipelines/coreclr/crossgen2-outerloop.yml | 17 +++++++++++++++++
src/tests/Common/helixpublishwitharcade.proj | 3 +++
6 files changed, 46 insertions(+)
diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
index f88692190cc221..34e69d1e99baa3 100644
--- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
+++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
@@ -7,6 +7,7 @@ parameters:
crossBuild: false
readyToRun: false
compositeBuildMode: false
+ crossgen2OutputFormat: ''
helixQueues: ''
displayNameArgs: ''
runInUnloadableContext: false
@@ -115,6 +116,7 @@ steps:
timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes)
runCrossGen2: ${{ eq(parameters.readyToRun, true) }}
compositeBuildMode: ${{ parameters.compositeBuildMode }}
+ crossgen2OutputFormat: ${{ parameters.crossgen2OutputFormat }}
runInUnloadableContext: ${{ parameters.runInUnloadableContext }}
nativeAotTest: ${{ parameters.nativeAotTest }}
helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj'
diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml
index 34351420b99805..10de7d574851b9 100644
--- a/eng/pipelines/common/templates/runtimes/run-test-job.yml
+++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml
@@ -11,6 +11,7 @@ parameters:
hotColdSplitting: false
liveLibrariesBuildConfig: ''
compositeBuildMode: false
+ crossgen2OutputFormat: ''
largeVersionBubble: false
useCodeFlowEnforcement: ''
helixQueues: ''
@@ -127,6 +128,9 @@ jobs:
value: 'composite'
- name: LogNamePrefix
value: TestRunLogs_R2R_CG2_Composite
+ - ${{ if ne(parameters.crossgen2OutputFormat, '') }}:
+ - name: LogNamePrefix
+ value: TestRunLogs_R2R_CG2_${{ parameters.crossgen2OutputFormat }}
- ${{ if eq(parameters.hotColdSplitting, true) }}:
- name: LogNamePrefix
value: TestRunLogs_R2R_CG2_HotColdSplitting
@@ -316,6 +320,7 @@ jobs:
timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes)
runCrossGen2: ${{ eq(parameters.readyToRun, true) }}
compositeBuildMode: ${{ parameters.compositeBuildMode }}
+ crossgen2OutputFormat: ${{ parameters.crossgen2OutputFormat }}
runInUnloadableContext: ${{ parameters.runInUnloadableContext }}
runInterpreter: ${{ parameters.runInterpreter }}
tieringTest: ${{ parameters.tieringTest }}
diff --git a/eng/pipelines/common/templates/runtimes/send-to-helix-step.yml b/eng/pipelines/common/templates/runtimes/send-to-helix-step.yml
index 9e66956a3c2547..3e685ceb0265e9 100644
--- a/eng/pipelines/common/templates/runtimes/send-to-helix-step.yml
+++ b/eng/pipelines/common/templates/runtimes/send-to-helix-step.yml
@@ -18,6 +18,7 @@ parameters:
timeoutPerTestInMinutes: ''
runCrossGen2: ''
compositeBuildMode: false
+ crossgen2OutputFormat: ''
helixProjectArguments: ''
extraHelixArguments: ''
runInUnloadableContext: ''
@@ -56,6 +57,7 @@ steps:
_HelixType: ${{ parameters.helixType }}
_RunCrossGen2: ${{ parameters.runCrossGen2 }}
_CompositeBuildMode: ${{ parameters.compositeBuildMode }}
+ _CrossGen2OutputFormat: ${{ parameters.crossgen2OutputFormat }}
_RunInUnloadableContext: ${{ parameters.runInUnloadableContext }}
_RunInterpreter: ${{ parameters.runInterpreter }}
_TieringTest: ${{ parameters.tieringTest }}
diff --git a/eng/pipelines/coreclr/crossgen2-composite.yml b/eng/pipelines/coreclr/crossgen2-composite.yml
index 23bb12d4af4d8f..d972a61ec2df78 100644
--- a/eng/pipelines/coreclr/crossgen2-composite.yml
+++ b/eng/pipelines/coreclr/crossgen2-composite.yml
@@ -98,3 +98,20 @@ extends:
displayNameArgs: Composite_LargeVersionBubble
liveLibrariesBuildConfig: Release
unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+
+ - template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+ helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ buildConfig: checked
+ platforms:
+ - osx_arm64
+ - osx_x64
+ jobParameters:
+ testGroup: innerloop
+ readyToRun: true
+ compositeBuildMode: true
+ crossgen2OutputFormat: macho
+ displayNameArgs: Composite_MachO
+ liveLibrariesBuildConfig: Release
+ unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_MachO
diff --git a/eng/pipelines/coreclr/crossgen2-outerloop.yml b/eng/pipelines/coreclr/crossgen2-outerloop.yml
index eabaa7f34d5add..33f1348aa831c6 100644
--- a/eng/pipelines/coreclr/crossgen2-outerloop.yml
+++ b/eng/pipelines/coreclr/crossgen2-outerloop.yml
@@ -80,6 +80,23 @@ extends:
liveLibrariesBuildConfig: Release
unifiedArtifactsName: Checked_CoreCLR_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
+ - template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+ helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ buildConfig: checked
+ platforms:
+ - osx_arm64
+ - osx_x64
+ jobParameters:
+ testGroup: outerloop
+ readyToRun: true
+ compositeBuildMode: true
+ crossgen2OutputFormat: macho
+ displayNameArgs: R2R_Composite_MachO
+ liveLibrariesBuildConfig: Release
+ unifiedArtifactsName: Checked_CoreCLR_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_MachO
+
# Outerloop testing in non-composite mode
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj
index 81d86466cf1483..bad045e5b63f16 100644
--- a/src/tests/Common/helixpublishwitharcade.proj
+++ b/src/tests/Common/helixpublishwitharcade.proj
@@ -36,6 +36,7 @@
<_RunCrossGen>false
<_RunCrossGen2>false
<_CompositeBuildMode>false
+ <_CrossGen2OutputFormat>
<_LongRunningGCTests>false
<_GcSimulatorTests>false
<_RunInUnloadableContext>false
@@ -102,6 +103,7 @@
PublishTestResults=$(_PublishTestResults);
RunCrossGen2=$(_RunCrossGen2);
CompositeBuildMode=$(_CompositeBuildMode);
+ CrossGen2OutputFormat=$(_Crossgen2OutputFormat);
LongRunningGCTests=$(_LongRunningGCTests);
GcSimulatorTests=$(_GcSimulatorTests);
RunInUnloadableContext=$(_RunInUnloadableContext);
@@ -646,6 +648,7 @@
+
From ac211aaaeec13578530c9b8a0863ba909cfebdaa Mon Sep 17 00:00:00 2001
From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com>
Date: Tue, 5 May 2026 09:33:21 +0100
Subject: [PATCH 2/2] Don't use MachO-suffixed artifact name
---
eng/pipelines/coreclr/crossgen2-composite.yml | 2 +-
eng/pipelines/coreclr/crossgen2-outerloop.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/eng/pipelines/coreclr/crossgen2-composite.yml b/eng/pipelines/coreclr/crossgen2-composite.yml
index d972a61ec2df78..68498ac584f7f6 100644
--- a/eng/pipelines/coreclr/crossgen2-composite.yml
+++ b/eng/pipelines/coreclr/crossgen2-composite.yml
@@ -114,4 +114,4 @@ extends:
crossgen2OutputFormat: macho
displayNameArgs: Composite_MachO
liveLibrariesBuildConfig: Release
- unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_MachO
+ unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
diff --git a/eng/pipelines/coreclr/crossgen2-outerloop.yml b/eng/pipelines/coreclr/crossgen2-outerloop.yml
index 33f1348aa831c6..477f1797244f1f 100644
--- a/eng/pipelines/coreclr/crossgen2-outerloop.yml
+++ b/eng/pipelines/coreclr/crossgen2-outerloop.yml
@@ -95,7 +95,7 @@ extends:
crossgen2OutputFormat: macho
displayNameArgs: R2R_Composite_MachO
liveLibrariesBuildConfig: Release
- unifiedArtifactsName: Checked_CoreCLR_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)_MachO
+ unifiedArtifactsName: Checked_CoreCLR_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
# Outerloop testing in non-composite mode
- template: /eng/pipelines/common/platform-matrix.yml