diff --git a/eng/docker-tools/templates/stages/dotnet/build-and-test.yml b/eng/docker-tools/templates/stages/dotnet/build-and-test.yml index 81eee2c9e7..46302747d1 100644 --- a/eng/docker-tools/templates/stages/dotnet/build-and-test.yml +++ b/eng/docker-tools/templates/stages/dotnet/build-and-test.yml @@ -3,6 +3,8 @@ parameters: linuxAmd64Pool: "" + # Optional pool priority: High, Medium, or Low. Empty leaves pool defaults unchanged. + poolPriority: "" # Custom init steps for all jobs customInitSteps: [] @@ -77,15 +79,31 @@ stages: # Linux AMD64 linuxAmd64Pool: ${{ if ne(parameters.linuxAmd64Pool, '') }}: - ${{ parameters.linuxAmd64Pool }} + ${{ if ne(parameters.poolPriority, '') }}: + ${{ each property in parameters.linuxAmd64Pool }}: + ${{ if ne(property.key, 'demands') }}: + ${{ property.key }}: ${{ property.value }} + demands: + - ${{ if parameters.linuxAmd64Pool.demands }}: + - ${{ parameters.linuxAmd64Pool.demands }} + - Priority -equals ${{ parameters.poolPriority }} + ${{ else }}: + ${{ parameters.linuxAmd64Pool }} ${{ elseif eq(variables['System.TeamProject'], parameters.publicProjectName) }}: name: $(linuxAmd64PublicPoolName) - demands: ImageOverride -equals $(linuxAmd64PublicPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: + - ImageOverride -equals $(linuxAmd64PublicPoolImage) + - Priority -equals ${{ parameters.poolPriority }} + ${{ else }}: + demands: ImageOverride -equals $(linuxAmd64PublicPoolImage) os: linux ${{ elseif eq(variables['System.TeamProject'], parameters.internalProjectName) }}: name: $(linuxAmd64InternalPoolName) image: $(linuxAmd64InternalPoolImage) os: linux + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} # Linux Arm64 linuxArm64Pool: @@ -93,10 +111,17 @@ stages: hostArchitecture: Arm64 ${{ if eq(variables['System.TeamProject'], parameters.publicProjectName) }}: name: $(linuxArm64PublicPoolName) - demands: ImageOverride -equals $(linuxArm64PublicPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: + - ImageOverride -equals $(linuxArm64PublicPoolImage) + - Priority -equals ${{ parameters.poolPriority }} + ${{ else }}: + demands: ImageOverride -equals $(linuxArm64PublicPoolImage) ${{ if eq(variables['System.TeamProject'], parameters.internalProjectName) }}: name: $(linuxArm64InternalPoolName) image: $(linuxArm64InternalPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} # Linux Arm32 linuxArm32Pool: @@ -104,10 +129,17 @@ stages: hostArchitecture: Arm64 ${{ if eq(variables['System.TeamProject'], parameters.publicProjectName) }}: name: $(linuxArm32PublicPoolName) - demands: ImageOverride -equals $(linuxArm32PublicPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: + - ImageOverride -equals $(linuxArm32PublicPoolImage) + - Priority -equals ${{ parameters.poolPriority }} + ${{ else }}: + demands: ImageOverride -equals $(linuxArm32PublicPoolImage) ${{ if eq(variables['System.TeamProject'], parameters.internalProjectName) }}: name: $(linuxArm32InternalPoolName) image: $(linuxArm32InternalPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} # Windows Server 2016 windows2016Pool: @@ -117,6 +149,8 @@ stages: image: $(windowsServer2016PublicPoolImage) ${{ if eq(variables['System.TeamProject'], parameters.internalProjectName) }}: image: $(windowsServer2016InternalPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} # Windows Server 2019 (1809) windows1809Pool: @@ -126,6 +160,8 @@ stages: image: $(windowsServer2019PublicPoolImage) ${{ if eq(variables['System.TeamProject'], parameters.internalProjectName) }}: image: $(windowsServer2019InternalPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} # Windows Server 2022 windows2022Pool: @@ -135,6 +171,8 @@ stages: image: $(windowsServer2022PublicPoolImage) ${{ if eq(variables['System.TeamProject'], parameters.internalProjectName) }}: image: $(windowsServer2022InternalPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} # Windows Server 2025 windows2025Pool: @@ -144,3 +182,5 @@ stages: image: $(windowsServer2025PublicPoolImage) ${{ if eq(variables['System.TeamProject'], parameters.internalProjectName) }}: image: $(windowsServer2025InternalPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} diff --git a/eng/docker-tools/templates/stages/dotnet/build-test-publish-repo.yml b/eng/docker-tools/templates/stages/dotnet/build-test-publish-repo.yml index 9102d994cb..df8f6dbd0a 100644 --- a/eng/docker-tools/templates/stages/dotnet/build-test-publish-repo.yml +++ b/eng/docker-tools/templates/stages/dotnet/build-test-publish-repo.yml @@ -2,6 +2,8 @@ parameters: linuxAmd64Pool: "" + # Optional pool priority: High, Medium, or Low. Empty leaves pool defaults unchanged. + poolPriority: "" # Custom init steps for all jobs customInitSteps: [] @@ -48,6 +50,7 @@ stages: - template: /eng/docker-tools/templates/stages/dotnet/build-and-test.yml@self parameters: linuxAmd64Pool: ${{ parameters.linuxAmd64Pool }} + poolPriority: ${{ parameters.poolPriority }} # Pre-build customGenerateMatrixInitSteps: ${{ parameters.customGenerateMatrixInitSteps }} customCopyBaseImagesInitSteps: ${{ parameters.customCopyBaseImagesInitSteps }} @@ -79,6 +82,7 @@ stages: - template: /eng/docker-tools/templates/stages/dotnet/publish.yml@self parameters: pool: ${{ parameters.linuxAmd64Pool }} + poolPriority: ${{ parameters.poolPriority }} customPublishInitSteps: ${{ parameters.customPublishInitSteps }} customInitSteps: ${{ parameters.customInitSteps }} internalProjectName: ${{ parameters.internalProjectName }} diff --git a/eng/docker-tools/templates/stages/dotnet/publish.yml b/eng/docker-tools/templates/stages/dotnet/publish.yml index 5cac237b95..f7eaba798f 100644 --- a/eng/docker-tools/templates/stages/dotnet/publish.yml +++ b/eng/docker-tools/templates/stages/dotnet/publish.yml @@ -6,6 +6,8 @@ parameters: publicProjectName: null publishConfig: null pool: "" + # Optional pool priority: High, Medium, or Low. Empty leaves pool defaults unchanged. + poolPriority: "" isStandalonePublish: false customPublishInitSteps: [] customInitSteps: [] @@ -53,12 +55,28 @@ stages: pool: ${{ if ne(parameters.pool, '') }}: - ${{ parameters.pool }} + ${{ if ne(parameters.poolPriority, '') }}: + ${{ each property in parameters.pool }}: + ${{ if ne(property.key, 'demands') }}: + ${{ property.key }}: ${{ property.value }} + demands: + - ${{ if parameters.pool.demands }}: + - ${{ parameters.pool.demands }} + - Priority -equals ${{ parameters.poolPriority }} + ${{ else }}: + ${{ parameters.pool }} ${{ elseif eq(variables['System.TeamProject'], parameters.publicProjectName) }}: name: $(linuxAmd64PublicPoolName) - demands: ImageOverride -equals $(linuxAmd64PublicPoolImage) + ${{ if ne(parameters.poolPriority, '') }}: + demands: + - ImageOverride -equals $(linuxAmd64PublicPoolImage) + - Priority -equals ${{ parameters.poolPriority }} + ${{ else }}: + demands: ImageOverride -equals $(linuxAmd64PublicPoolImage) os: linux ${{ elseif eq(variables['System.TeamProject'], parameters.internalProjectName) }}: name: $(linuxAmd64InternalPoolName) image: $(linuxAmd64InternalPoolImage) os: linux + ${{ if ne(parameters.poolPriority, '') }}: + demands: Priority -equals ${{ parameters.poolPriority }} diff --git a/eng/docker-tools/templates/variables/docker-images.yml b/eng/docker-tools/templates/variables/docker-images.yml index 334fb561fc..2a64cc79a3 100644 --- a/eng/docker-tools/templates/variables/docker-images.yml +++ b/eng/docker-tools/templates/variables/docker-images.yml @@ -1,5 +1,5 @@ variables: - imageNames.imageBuilderName: mcr.microsoft.com/dotnet-buildtools/image-builder@sha256:8d452a2daee53be18da5bc5c17776672444b65ae334552937a10596f626da31d + imageNames.imageBuilderName: mcr.microsoft.com/dotnet-buildtools/image-builder@sha256:b9102ccb33a9819e6cef1a618803b1e61a82b6715c8540e3fc757f10137a8c57 imageNames.imageBuilder: $(imageNames.imageBuilderName) imageNames.imageBuilder.withrepo: imagebuilder-withrepo:$(Build.BuildId)-$(System.JobId) imageNames.testRunner: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux3.0-docker-testrunner