-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Move OSX test-only CI jobs to Linux runners #124930
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
fca8b94
3f8d9a0
c027694
710832d
1964604
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| parameters: | ||
| buildConfig: '' | ||
| osGroup: '' | ||
| osSubgroup: '' | ||
| archType: '' | ||
| targetRid: '' | ||
| hostedOs: '' | ||
| timeoutInMinutes: 150 | ||
| pool: '' | ||
| condition: true | ||
| shouldContinueOnError: false | ||
| variables: {} | ||
| dependsOn: [] | ||
| dependsOnGlobalBuilds: [] | ||
| helixQueues: [] | ||
| buildArtifactName: '' | ||
| testArtifactName: '' | ||
| templatePath: 'templates' | ||
|
|
||
| jobs: | ||
| - template: /eng/common/${{ parameters.templatePath }}/job/job.yml | ||
| parameters: | ||
| enablePublishBuildArtifacts: true | ||
| timeoutInMinutes: ${{ parameters.timeoutInMinutes }} | ||
| condition: and(succeeded(), ${{ parameters.condition }}) | ||
| helixRepo: dotnet/runtime | ||
| displayName: ${{ format('Installer Test {0}{1} {2} {3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} | ||
| ${{ if eq(parameters.hostedOs, '') }}: | ||
| name: ${{ format('installer_test_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} | ||
| ${{ if ne(parameters.hostedOs, '') }}: | ||
| name: ${{ format('installer_test_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.hostedOs, parameters.buildConfig) }} | ||
|
|
||
| pool: ${{ parameters.pool }} | ||
|
|
||
| ${{ if eq(parameters.osSubGroup, '_musl') }}: | ||
| disableComponentGovernance: true | ||
|
|
||
| dependsOn: | ||
| - ${{ each build in parameters.dependsOn }}: | ||
| - ${{ build }} | ||
| - ${{ each globalBuild in parameters.dependsOnGlobalBuilds }}: | ||
| - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, coalesce(globalBuild.buildConfig, parameters.buildConfig), globalBuild.nameSuffix) }} | ||
|
|
||
| workspace: | ||
| clean: all | ||
|
|
||
| variables: | ||
| - ${{ if eq(variables['System.TeamProject'], 'internal') }}: | ||
| - group: DotNet-HelixApi-Access | ||
| - group: AzureDevOps-Artifact-Feeds-Pats | ||
|
|
||
| - ${{ parameters.variables }} | ||
|
|
||
| steps: | ||
| - checkout: self | ||
| clean: true | ||
| fetchDepth: $(checkoutFetchDepth) | ||
| fetchTags: false | ||
|
|
||
| - template: /eng/common/${{ parameters.templatePath }}/steps/enable-internal-sources.yml | ||
|
|
||
| - template: /eng/pipelines/common/download-artifact-step.yml | ||
| parameters: | ||
| unpackFolder: $(Build.SourcesDirectory)/artifacts/bin | ||
| artifactFileName: '${{ parameters.buildArtifactName }}$(archiveExtension)' | ||
| artifactName: '${{ parameters.buildArtifactName }}' | ||
| displayName: 'unified artifacts' | ||
|
|
||
| - template: /eng/pipelines/common/download-artifact-step.yml | ||
| parameters: | ||
| unpackFolder: $(Build.SourcesDirectory)/artifacts/tests | ||
| artifactFileName: '${{ parameters.testArtifactName }}$(archiveExtension)' | ||
| artifactName: '${{ parameters.testArtifactName }}' | ||
| displayName: 'installer test artifacts' | ||
|
|
||
| - template: /eng/pipelines/installer/helix.yml | ||
| parameters: | ||
| osGroup: ${{ parameters.osGroup }} | ||
| archType: ${{ parameters.archType }} | ||
| helixQueues: ${{ parameters.helixQueues }} | ||
| creator: dotnet-bot |
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
|
|
@@ -250,7 +250,7 @@ extends: | |||
| - windows_x64 | ||||
| jobParameters: | ||||
| nameSuffix: CoreCLR_Libraries | ||||
| buildArgs: -s clr+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true | ||||
| buildArgs: -s clr+libs+libs.tests+host+packs -rc Release -c $(_BuildConfig) -hc Release /p:ArchiveTests=true | ||||
| timeoutInMinutes: 120 | ||||
| postBuildSteps: | ||||
| - template: /eng/pipelines/common/upload-artifact-step.yml | ||||
|
|
@@ -270,6 +270,15 @@ extends: | |||
| archiveExtension: $(archiveExtension) | ||||
| tarCompression: $(tarCompression) | ||||
| artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) | ||||
| - template: /eng/pipelines/common/upload-artifact-step.yml | ||||
| parameters: | ||||
| rootFolder: $(Build.SourcesDirectory)/artifacts/tests | ||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (Not in this PR) At some point we should unify between |
||||
| includeRootFolder: false | ||||
| archiveType: $(archiveType) | ||||
| archiveExtension: $(archiveExtension) | ||||
| tarCompression: $(tarCompression) | ||||
| artifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) | ||||
| displayName: Installer Test Assets | ||||
| condition: >- | ||||
| or( | ||||
| eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), | ||||
|
|
@@ -284,7 +293,7 @@ extends: | |||
| - windows_x86 | ||||
| jobParameters: | ||||
| nameSuffix: CoreCLR_Libraries | ||||
| buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true | ||||
| buildArgs: -s clr+libs+libs.tests+host+packs -c $(_BuildConfig) -hc $(debugOnPrReleaseOnRolling) /p:ArchiveTests=true | ||||
| timeoutInMinutes: 120 | ||||
| postBuildSteps: | ||||
| - template: /eng/pipelines/common/upload-artifact-step.yml | ||||
|
|
@@ -304,6 +313,15 @@ extends: | |||
| archiveExtension: $(archiveExtension) | ||||
| tarCompression: $(tarCompression) | ||||
| artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) | ||||
| - template: /eng/pipelines/common/upload-artifact-step.yml | ||||
| parameters: | ||||
| rootFolder: $(Build.SourcesDirectory)/artifacts/tests | ||||
| includeRootFolder: false | ||||
| archiveType: $(archiveType) | ||||
| archiveExtension: $(archiveExtension) | ||||
| tarCompression: $(tarCompression) | ||||
| artifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) | ||||
| displayName: Installer Test Assets | ||||
| condition: >- | ||||
| or( | ||||
| eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), | ||||
|
|
@@ -322,7 +340,7 @@ extends: | |||
| - osx_x64 | ||||
| jobParameters: | ||||
| nameSuffix: CoreCLR_Libraries | ||||
| buildArgs: -s clr+libs -c $(_BuildConfig) | ||||
| buildArgs: -s clr+libs+host+packs -c $(_BuildConfig) -hc $(debugOnPrReleaseOnRolling) | ||||
| timeoutInMinutes: 120 | ||||
| postBuildSteps: | ||||
| - template: /eng/pipelines/common/upload-artifact-step.yml | ||||
|
|
@@ -334,6 +352,15 @@ extends: | |||
| 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/tests | ||||
| includeRootFolder: false | ||||
| archiveType: $(archiveType) | ||||
| archiveExtension: $(archiveExtension) | ||||
| tarCompression: $(tarCompression) | ||||
| artifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) | ||||
| displayName: Installer Test Assets | ||||
| condition: >- | ||||
| or( | ||||
| eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), | ||||
|
|
@@ -1449,69 +1476,83 @@ extends: | |||
| 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. | ||||
| # Installer Test | ||||
| # | ||||
| - template: /eng/pipelines/common/platform-matrix.yml | ||||
| parameters: | ||||
| jobTemplate: /eng/pipelines/common/global-build-job.yml | ||||
| jobTemplate: /eng/pipelines/installer/run-test-job.yml | ||||
| buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} | ||||
| platforms: | ||||
| - windows_x86 | ||||
| helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml | ||||
| jobParameters: | ||||
| dependsOnGlobalBuilds: | ||||
| - nameSuffix: CoreCLR_Libraries | ||||
| buildConfig: release | ||||
| buildArtifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release | ||||
| testArtifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release | ||||
| timeoutInMinutes: 150 | ||||
| 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/installer/run-test-job.yml | ||||
| buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} | ||||
| platforms: | ||||
| - osx_x64 | ||||
| helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml | ||||
| jobParameters: | ||||
| nameSuffix: Installer_Build_And_Test | ||||
| buildArgs: -s host+packs -c $(_BuildConfig) -lc Release -rc Release | ||||
| hostedOs: linux | ||||
|
Comment on lines
1505
to
+1508
|
||||
| hostedOs: linux |
Copilot
AI
Feb 27, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hostedOs: linux is used for an osx Helix submission job, but the current pool selection logic in eng/pipelines/common/xplat-setup.yml will still also select the macOS pool based on osGroup: osx (in addition to the Linux pool selected by hostedOs). This results in an invalid pool object (both vmImage and name/demands). Adjust xplat-setup.yml to make hostedOs override mutually exclusive with osGroup-based macOS pool selection, or set pool: explicitly for this job.
| hostedOs: linux |
Copilot
AI
Feb 27, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hostedOs: linux is intended to move this osx test-submission job to Linux agents, but eng/pipelines/common/xplat-setup.yml currently selects a macOS pool whenever osGroup is osx regardless of hostedOs. With hostedOs=linux, both the Linux and macOS pool blocks match, producing an invalid pool definition. Update xplat-setup.yml to honor hostedOs as an override (or pass an explicit Linux pool here).
| hostedOs: linux |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that we're building all subsets in these jobs, we should rename these jobs to
AllSubsets_CoreCLRto be consistent with the other jobs where we build all subsets.