From f7204c36f878da47fdd1a201a905fed6cff5faa8 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Tue, 24 Feb 2026 17:37:05 +0000 Subject: [PATCH 1/4] Update release machines to windows-2025 --- windows-release/azure-pipelines.yml | 28 +++++++++++++ windows-release/stage-build.yml | 46 +++++++++++++++++---- windows-release/stage-layout-embed.yml | 7 +++- windows-release/stage-layout-full.yml | 7 +++- windows-release/stage-layout-msix.yml | 7 +++- windows-release/stage-layout-nuget.yml | 7 +++- windows-release/stage-layout-pymanager.yml | 7 +++- windows-release/stage-layout-symbols.yml | 7 +++- windows-release/stage-msi.yml | 7 +++- windows-release/stage-pack-msix.yml | 13 +++++- windows-release/stage-pack-nuget.yml | 7 +++- windows-release/stage-pack-pymanager.yml | 7 +++- windows-release/stage-publish-nugetorg.yml | 7 +++- windows-release/stage-publish-pymanager.yml | 7 +++- windows-release/stage-publish-pythonorg.yml | 7 +++- windows-release/stage-sign.yml | 5 ++- windows-release/stage-test-embed.yml | 5 ++- windows-release/stage-test-msi.yml | 3 +- windows-release/stage-test-nuget.yml | 5 ++- windows-release/stage-test-pymanager.yml | 3 +- 20 files changed, 165 insertions(+), 27 deletions(-) diff --git a/windows-release/azure-pipelines.yml b/windows-release/azure-pipelines.yml index 0e8a6148..299f9d2f 100644 --- a/windows-release/azure-pipelines.yml +++ b/windows-release/azure-pipelines.yml @@ -116,6 +116,14 @@ parameters: displayName: "Build the JIT compiler for free-threaded builds (not used yet)" type: boolean default: false +- name: vmImage + displayName: "VM Image" + type: object + default: windows-2025 +- name: vmImageArm64 + displayName: "VM Image (ARM64)" + type: object + default: windows-11-arm resources: pipelines: @@ -159,6 +167,7 @@ stages: jobs: - template: stage-build.yml parameters: + pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} DoPGO: ${{ parameters.DoPGO }} DoPGOARM64: ${{ parameters.DoPGOARM64 }} @@ -183,6 +192,7 @@ stages: jobs: - template: stage-sign.yml parameters: + pool: ${{ parameters.vmImage }} SigningCertificate: ${{ parameters.SigningCertificate }} DoFreethreaded: ${{ parameters.DoFreethreaded }} @@ -197,33 +207,39 @@ stages: jobs: - template: stage-layout-full.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - template: stage-layout-symbols.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoEmbed, 'true') }}: - template: stage-layout-embed.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-layout-nuget.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoMSIX, 'true') }}: - template: stage-layout-msix.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-layout-pymanager.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} DoEmbed: ${{ parameters.DoEmbed }} @@ -240,6 +256,7 @@ stages: - ${{ if eq(parameters.DoMSI, 'true') }}: - template: stage-msi.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoARM64: ${{ parameters.DoARM64}} DoFreethreaded: ${{ parameters.DoFreethreaded }} @@ -247,16 +264,19 @@ stages: - ${{ if eq(parameters.DoMSIX, 'true') }}: - template: stage-pack-msix.yml parameters: + pool: ${{ parameters.vmImage }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-pack-nuget.yml parameters: + pool: ${{ parameters.vmImage }} ${{ if eq(parameters.SignNuget, 'true') }}: SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-pack-pymanager.yml parameters: + pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} DoEmbed: ${{ parameters.DoEmbed }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} @@ -266,17 +286,22 @@ stages: jobs: - ${{ if eq(parameters.DoEmbed, 'true') }}: - template: stage-test-embed.yml + parameters: + pool: ${{ parameters.vmImage }} - ${{ if and(eq(parameters.DoMSI, 'true'), eq(parameters.TestMSI, 'true')) }}: - template: stage-test-msi.yml parameters: + pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-test-nuget.yml parameters: + pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-test-pymanager.yml parameters: + pool: ${{ parameters.vmImage }} DoEmbed: ${{ parameters.DoEmbed }} DoFreethreaded: ${{ parameters.DoFreethreaded }} @@ -290,16 +315,19 @@ stages: - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-publish-pymanager.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPublish: ${{ parameters.BuildToPublish }} DoEmbed: ${{ parameters.DoEmbed }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoMSI, 'true') }}: - template: stage-publish-pythonorg.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPublish: ${{ parameters.BuildToPublish }} DoEmbed: ${{ parameters.DoEmbed }} IncludeGPG: ${{ parameters.DoGPG }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-publish-nugetorg.yml parameters: + pool: ${{ parameters.vmImage }} BuildToPublish: ${{ parameters.BuildToPublish }} diff --git a/windows-release/stage-build.yml b/windows-release/stage-build.yml index a76aa472..5c108a00 100644 --- a/windows-release/stage-build.yml +++ b/windows-release/stage-build.yml @@ -1,4 +1,7 @@ parameters: + pool: windows-latest + arm64pool: + name: 'Windows ARM64' DoPGO: false # DoPGOARM64 only applies if DoPGO is also true DoPGOARM64: true @@ -10,8 +13,13 @@ parameters: jobs: - job: Build_Docs displayName: Docs build + pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -41,7 +49,11 @@ jobs: displayName: Python build pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -177,7 +189,11 @@ jobs: displayName: Python PGO build pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -220,7 +236,11 @@ jobs: displayName: Python PGO build pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -263,7 +283,11 @@ jobs: timeoutInMinutes: 300 pool: - name: 'Windows ARM64' + ${{ if containsValue(parameters.arm64pool, name) }}: + ${{ each p in parameters.arm64pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.arm64pool }} workspace: clean: all @@ -300,7 +324,11 @@ jobs: dependsOn: Build_Python_PGO_2 pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -340,7 +368,11 @@ jobs: displayName: Publish Tcl/Tk Library pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} variables: IncludeLLVM: false diff --git a/windows-release/stage-layout-embed.yml b/windows-release/stage-layout-embed.yml index 4f077f86..50fa61cd 100644 --- a/windows-release/stage-layout-embed.yml +++ b/windows-release/stage-layout-embed.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current SigningCertificate: '' @@ -7,7 +8,11 @@ jobs: displayName: Make embeddable layout pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-layout-full.yml b/windows-release/stage-layout-full.yml index 75917add..b94c09b2 100644 --- a/windows-release/stage-layout-full.yml +++ b/windows-release/stage-layout-full.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current DoFreethreaded: false SigningCertificate: '' @@ -8,7 +9,11 @@ jobs: displayName: Make layouts pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-layout-msix.yml b/windows-release/stage-layout-msix.yml index 54dcf3d6..213f9711 100644 --- a/windows-release/stage-layout-msix.yml +++ b/windows-release/stage-layout-msix.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current SigningCertificate: '' @@ -7,7 +8,11 @@ jobs: displayName: Make MSIX layout pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-layout-nuget.yml b/windows-release/stage-layout-nuget.yml index 0cabcb9b..e77b21d0 100644 --- a/windows-release/stage-layout-nuget.yml +++ b/windows-release/stage-layout-nuget.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current DoFreethreaded: false SigningCertificate: '' @@ -8,7 +9,11 @@ jobs: displayName: Make Nuget layout pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-layout-pymanager.yml b/windows-release/stage-layout-pymanager.yml index 5bae2f5f..b6fafb93 100644 --- a/windows-release/stage-layout-pymanager.yml +++ b/windows-release/stage-layout-pymanager.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current DoFreethreaded: false DoEmbed: false @@ -10,7 +11,11 @@ jobs: displayName: Make PyManager layouts pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-layout-symbols.yml b/windows-release/stage-layout-symbols.yml index a890b51d..f7ad9334 100644 --- a/windows-release/stage-layout-symbols.yml +++ b/windows-release/stage-layout-symbols.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current DoFreethreaded: false Packages: @@ -23,7 +24,11 @@ jobs: displayName: Make symbols layout pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-msi.yml b/windows-release/stage-msi.yml index 52904662..58c1c997 100644 --- a/windows-release/stage-msi.yml +++ b/windows-release/stage-msi.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPackage: current DoARM64: true DoFreethreaded: false @@ -9,7 +10,11 @@ jobs: displayName: Make MSI pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} variables: - ${{ if eq(parameters.SigningCertificate, 'PythonSoftwareFoundation') }}: diff --git a/windows-release/stage-pack-msix.yml b/windows-release/stage-pack-msix.yml index 53bfa800..e90cf8a1 100644 --- a/windows-release/stage-pack-msix.yml +++ b/windows-release/stage-pack-msix.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest SigningCertificate: '' jobs: @@ -6,7 +7,11 @@ jobs: displayName: Pack MSIX bundles pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -96,7 +101,11 @@ jobs: - Pack_MSIX pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-pack-nuget.yml b/windows-release/stage-pack-nuget.yml index 2a0ab657..0d5925ec 100644 --- a/windows-release/stage-pack-nuget.yml +++ b/windows-release/stage-pack-nuget.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest DoFreethreaded: false SigningCertificate: '' @@ -7,7 +8,11 @@ jobs: displayName: Pack Nuget bundles pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-pack-pymanager.yml b/windows-release/stage-pack-pymanager.yml index 30966514..4ec20004 100644 --- a/windows-release/stage-pack-pymanager.yml +++ b/windows-release/stage-pack-pymanager.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest DoFreethreaded: false DoEmbed: false SigningCertificate: '' @@ -28,7 +29,11 @@ jobs: displayName: Pack PyManager bundle pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-publish-nugetorg.yml b/windows-release/stage-publish-nugetorg.yml index e0dc889d..6bcd415c 100644 --- a/windows-release/stage-publish-nugetorg.yml +++ b/windows-release/stage-publish-nugetorg.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPublish: current jobs: @@ -7,7 +8,11 @@ jobs: condition: and(succeeded(), ne(variables['SkipNugetPublish'], 'true')) pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-publish-pymanager.yml b/windows-release/stage-publish-pymanager.yml index a5a3df6b..717ae0e8 100644 --- a/windows-release/stage-publish-pymanager.yml +++ b/windows-release/stage-publish-pymanager.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPublish: current DoFreethreaded: false DoEmbed: false @@ -30,7 +31,11 @@ jobs: condition: and(succeeded(), ne(variables['SkipPythonOrgPublish'], 'true')) pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} variables: - group: PythonOrgPublish diff --git a/windows-release/stage-publish-pythonorg.yml b/windows-release/stage-publish-pythonorg.yml index b6cdfc56..5be41458 100644 --- a/windows-release/stage-publish-pythonorg.yml +++ b/windows-release/stage-publish-pythonorg.yml @@ -1,4 +1,5 @@ parameters: + pool: windows-latest BuildToPublish: current DoEmbed: true IncludeGPG: false @@ -10,7 +11,11 @@ jobs: condition: and(succeeded(), ne(variables['SkipPythonOrgPublish'], 'true')) pool: - vmImage: windows-2022 + ${{ if containsValue(parameters.pool, name) }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} variables: - group: PythonOrgPublish diff --git a/windows-release/stage-sign.yml b/windows-release/stage-sign.yml index 3a888414..0e8d1669 100644 --- a/windows-release/stage-sign.yml +++ b/windows-release/stage-sign.yml @@ -1,4 +1,5 @@ parameters: + vmImage: windows-latest Include: '*.exe, *.dll, *.pyd, *.cat, *.ps1' Exclude: 'vcruntime*, libffi*, libcrypto*, libssl*' SigningCertificate: '' @@ -10,7 +11,7 @@ jobs: displayName: Sign Python binaries pool: - vmImage: windows-2022 + vmImage: ${{ parameters.vmImage }} workspace: clean: all @@ -81,7 +82,7 @@ jobs: displayName: Tag unsigned build pool: - vmImage: windows-2022 + vmImage: ${{ parameters.vmImage }} steps: - checkout: none diff --git a/windows-release/stage-test-embed.yml b/windows-release/stage-test-embed.yml index 293c5336..3dccba87 100644 --- a/windows-release/stage-test-embed.yml +++ b/windows-release/stage-test-embed.yml @@ -1,9 +1,12 @@ +parameters: + vmImage: windows-latest + jobs: - job: Test_Embed displayName: Test Embed pool: - vmImage: windows-2022 + vmImage: ${{ parameters.vmImage }} workspace: clean: all diff --git a/windows-release/stage-test-msi.yml b/windows-release/stage-test-msi.yml index 3b02a5ed..d534ac12 100644 --- a/windows-release/stage-test-msi.yml +++ b/windows-release/stage-test-msi.yml @@ -1,4 +1,5 @@ parameters: + vmImage: windows-latest DoFreethreaded: false jobs: @@ -6,7 +7,7 @@ jobs: displayName: Test MSI pool: - vmImage: windows-2022 + vmImage: ${{ parameters.vmImage }} workspace: clean: all diff --git a/windows-release/stage-test-nuget.yml b/windows-release/stage-test-nuget.yml index 670a2e32..40a343c0 100644 --- a/windows-release/stage-test-nuget.yml +++ b/windows-release/stage-test-nuget.yml @@ -1,9 +1,12 @@ +parameters: + vmImage: windows-latest + jobs: - job: Test_Nuget displayName: Test Nuget pool: - vmImage: windows-2022 + vmImage: ${{ parameters.vmImage }} workspace: clean: all diff --git a/windows-release/stage-test-pymanager.yml b/windows-release/stage-test-pymanager.yml index a1f44583..4e68a489 100644 --- a/windows-release/stage-test-pymanager.yml +++ b/windows-release/stage-test-pymanager.yml @@ -1,4 +1,5 @@ parameters: + vmImage: windows-latest DoEmbed: false DoFreethreaded: false @@ -7,7 +8,7 @@ jobs: displayName: Test PyManager pool: - vmImage: windows-2022 + vmImage: ${{ parameters.vmImage }} workspace: clean: all From 253bf313962f795d61740183477d5b6146ffd49f Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Tue, 24 Feb 2026 18:13:54 +0000 Subject: [PATCH 2/4] Fix quoting --- windows-release/stage-build.yml | 14 +++++++------- windows-release/stage-layout-embed.yml | 2 +- windows-release/stage-layout-full.yml | 2 +- windows-release/stage-layout-msix.yml | 2 +- windows-release/stage-layout-nuget.yml | 2 +- windows-release/stage-layout-pymanager.yml | 2 +- windows-release/stage-layout-symbols.yml | 2 +- windows-release/stage-msi.yml | 2 +- windows-release/stage-pack-msix.yml | 4 ++-- windows-release/stage-pack-nuget.yml | 2 +- windows-release/stage-pack-pymanager.yml | 2 +- windows-release/stage-publish-nugetorg.yml | 2 +- windows-release/stage-publish-pymanager.yml | 2 +- windows-release/stage-publish-pythonorg.yml | 2 +- windows-release/stage-sign.yml | 14 +++++++++++--- windows-release/stage-test-embed.yml | 8 ++++++-- windows-release/stage-test-msi.yml | 8 ++++++-- windows-release/stage-test-nuget.yml | 8 ++++++-- windows-release/stage-test-pymanager.yml | 6 +++++- 19 files changed, 55 insertions(+), 31 deletions(-) diff --git a/windows-release/stage-build.yml b/windows-release/stage-build.yml index 5c108a00..18a8d9ee 100644 --- a/windows-release/stage-build.yml +++ b/windows-release/stage-build.yml @@ -15,7 +15,7 @@ jobs: displayName: Docs build pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -49,7 +49,7 @@ jobs: displayName: Python build pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -189,7 +189,7 @@ jobs: displayName: Python PGO build pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -236,7 +236,7 @@ jobs: displayName: Python PGO build pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -283,7 +283,7 @@ jobs: timeoutInMinutes: 300 pool: - ${{ if containsValue(parameters.arm64pool, name) }}: + ${{ if containsValue(parameters.arm64pool, 'name') }}: ${{ each p in parameters.arm64pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -324,7 +324,7 @@ jobs: dependsOn: Build_Python_PGO_2 pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -368,7 +368,7 @@ jobs: displayName: Publish Tcl/Tk Library pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-layout-embed.yml b/windows-release/stage-layout-embed.yml index 50fa61cd..c81049f2 100644 --- a/windows-release/stage-layout-embed.yml +++ b/windows-release/stage-layout-embed.yml @@ -8,7 +8,7 @@ jobs: displayName: Make embeddable layout pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-layout-full.yml b/windows-release/stage-layout-full.yml index b94c09b2..510881a8 100644 --- a/windows-release/stage-layout-full.yml +++ b/windows-release/stage-layout-full.yml @@ -9,7 +9,7 @@ jobs: displayName: Make layouts pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-layout-msix.yml b/windows-release/stage-layout-msix.yml index 213f9711..2dffc6ad 100644 --- a/windows-release/stage-layout-msix.yml +++ b/windows-release/stage-layout-msix.yml @@ -8,7 +8,7 @@ jobs: displayName: Make MSIX layout pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-layout-nuget.yml b/windows-release/stage-layout-nuget.yml index e77b21d0..2ec2b34c 100644 --- a/windows-release/stage-layout-nuget.yml +++ b/windows-release/stage-layout-nuget.yml @@ -9,7 +9,7 @@ jobs: displayName: Make Nuget layout pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-layout-pymanager.yml b/windows-release/stage-layout-pymanager.yml index b6fafb93..3c8cca4f 100644 --- a/windows-release/stage-layout-pymanager.yml +++ b/windows-release/stage-layout-pymanager.yml @@ -11,7 +11,7 @@ jobs: displayName: Make PyManager layouts pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-layout-symbols.yml b/windows-release/stage-layout-symbols.yml index f7ad9334..f31fb9a7 100644 --- a/windows-release/stage-layout-symbols.yml +++ b/windows-release/stage-layout-symbols.yml @@ -24,7 +24,7 @@ jobs: displayName: Make symbols layout pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-msi.yml b/windows-release/stage-msi.yml index 58c1c997..25fed222 100644 --- a/windows-release/stage-msi.yml +++ b/windows-release/stage-msi.yml @@ -10,7 +10,7 @@ jobs: displayName: Make MSI pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-pack-msix.yml b/windows-release/stage-pack-msix.yml index e90cf8a1..c7bda0e4 100644 --- a/windows-release/stage-pack-msix.yml +++ b/windows-release/stage-pack-msix.yml @@ -7,7 +7,7 @@ jobs: displayName: Pack MSIX bundles pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: @@ -101,7 +101,7 @@ jobs: - Pack_MSIX pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-pack-nuget.yml b/windows-release/stage-pack-nuget.yml index 0d5925ec..6254bbe9 100644 --- a/windows-release/stage-pack-nuget.yml +++ b/windows-release/stage-pack-nuget.yml @@ -8,7 +8,7 @@ jobs: displayName: Pack Nuget bundles pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-pack-pymanager.yml b/windows-release/stage-pack-pymanager.yml index 4ec20004..ef755c9d 100644 --- a/windows-release/stage-pack-pymanager.yml +++ b/windows-release/stage-pack-pymanager.yml @@ -29,7 +29,7 @@ jobs: displayName: Pack PyManager bundle pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-publish-nugetorg.yml b/windows-release/stage-publish-nugetorg.yml index 6bcd415c..fcbacacc 100644 --- a/windows-release/stage-publish-nugetorg.yml +++ b/windows-release/stage-publish-nugetorg.yml @@ -8,7 +8,7 @@ jobs: condition: and(succeeded(), ne(variables['SkipNugetPublish'], 'true')) pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-publish-pymanager.yml b/windows-release/stage-publish-pymanager.yml index 717ae0e8..aa383512 100644 --- a/windows-release/stage-publish-pymanager.yml +++ b/windows-release/stage-publish-pymanager.yml @@ -31,7 +31,7 @@ jobs: condition: and(succeeded(), ne(variables['SkipPythonOrgPublish'], 'true')) pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-publish-pythonorg.yml b/windows-release/stage-publish-pythonorg.yml index 5be41458..18f2dc5a 100644 --- a/windows-release/stage-publish-pythonorg.yml +++ b/windows-release/stage-publish-pythonorg.yml @@ -11,7 +11,7 @@ jobs: condition: and(succeeded(), ne(variables['SkipPythonOrgPublish'], 'true')) pool: - ${{ if containsValue(parameters.pool, name) }}: + ${{ if containsValue(parameters.pool, 'name') }}: ${{ each p in parameters.pool }}: ${{ p.key }}: ${{ p.value }} ${{ else }}: diff --git a/windows-release/stage-sign.yml b/windows-release/stage-sign.yml index 0e8d1669..b79066d5 100644 --- a/windows-release/stage-sign.yml +++ b/windows-release/stage-sign.yml @@ -1,5 +1,5 @@ parameters: - vmImage: windows-latest + pool: windows-latest Include: '*.exe, *.dll, *.pyd, *.cat, *.ps1' Exclude: 'vcruntime*, libffi*, libcrypto*, libssl*' SigningCertificate: '' @@ -11,7 +11,11 @@ jobs: displayName: Sign Python binaries pool: - vmImage: ${{ parameters.vmImage }} + ${{ if containsValue(parameters.pool, 'name') }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all @@ -82,7 +86,11 @@ jobs: displayName: Tag unsigned build pool: - vmImage: ${{ parameters.vmImage }} + ${{ if containsValue(parameters.pool, 'name') }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} steps: - checkout: none diff --git a/windows-release/stage-test-embed.yml b/windows-release/stage-test-embed.yml index 3dccba87..65e51f7b 100644 --- a/windows-release/stage-test-embed.yml +++ b/windows-release/stage-test-embed.yml @@ -1,12 +1,16 @@ parameters: - vmImage: windows-latest + pool: windows-latest jobs: - job: Test_Embed displayName: Test Embed pool: - vmImage: ${{ parameters.vmImage }} + ${{ if containsValue(parameters.pool, 'name') }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-test-msi.yml b/windows-release/stage-test-msi.yml index d534ac12..87121491 100644 --- a/windows-release/stage-test-msi.yml +++ b/windows-release/stage-test-msi.yml @@ -1,5 +1,5 @@ parameters: - vmImage: windows-latest + pool: windows-latest DoFreethreaded: false jobs: @@ -7,7 +7,11 @@ jobs: displayName: Test MSI pool: - vmImage: ${{ parameters.vmImage }} + ${{ if containsValue(parameters.pool, 'name') }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-test-nuget.yml b/windows-release/stage-test-nuget.yml index 40a343c0..2099920c 100644 --- a/windows-release/stage-test-nuget.yml +++ b/windows-release/stage-test-nuget.yml @@ -1,12 +1,16 @@ parameters: - vmImage: windows-latest + pool: windows-latest jobs: - job: Test_Nuget displayName: Test Nuget pool: - vmImage: ${{ parameters.vmImage }} + ${{ if containsValue(parameters.pool, 'name') }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all diff --git a/windows-release/stage-test-pymanager.yml b/windows-release/stage-test-pymanager.yml index 4e68a489..bb4b5adc 100644 --- a/windows-release/stage-test-pymanager.yml +++ b/windows-release/stage-test-pymanager.yml @@ -8,7 +8,11 @@ jobs: displayName: Test PyManager pool: - vmImage: ${{ parameters.vmImage }} + ${{ if containsValue(parameters.pool, 'name') }}: + ${{ each p in parameters.pool }}: + ${{ p.key }}: ${{ p.value }} + ${{ else }}: + vmImage: ${{ parameters.pool }} workspace: clean: all From f260e271f7bf8d7edcd772dfc11278dfe8ee171c Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Tue, 24 Feb 2026 18:26:25 +0000 Subject: [PATCH 3/4] Move all pools (apart from ARM) to main file --- windows-release/azure-pipelines.yml | 38 ++++++--------- windows-release/stage-build.yml | 51 +-------------------- windows-release/stage-layout-embed.yml | 8 ---- windows-release/stage-layout-full.yml | 8 ---- windows-release/stage-layout-msix.yml | 8 ---- windows-release/stage-layout-nuget.yml | 8 ---- windows-release/stage-layout-pymanager.yml | 8 ---- windows-release/stage-layout-symbols.yml | 8 ---- windows-release/stage-msi.yml | 8 ---- windows-release/stage-pack-msix.yml | 15 ------ windows-release/stage-pack-nuget.yml | 8 ---- windows-release/stage-pack-pymanager.yml | 8 ---- windows-release/stage-publish-nugetorg.yml | 8 ---- windows-release/stage-publish-pymanager.yml | 8 ---- windows-release/stage-publish-pythonorg.yml | 8 ---- windows-release/stage-sign.yml | 15 ------ windows-release/stage-test-embed.yml | 10 ---- windows-release/stage-test-msi.yml | 8 ---- windows-release/stage-test-nuget.yml | 10 ---- windows-release/stage-test-pymanager.yml | 8 ---- 20 files changed, 14 insertions(+), 237 deletions(-) diff --git a/windows-release/azure-pipelines.yml b/windows-release/azure-pipelines.yml index 299f9d2f..9f87474c 100644 --- a/windows-release/azure-pipelines.yml +++ b/windows-release/azure-pipelines.yml @@ -118,12 +118,8 @@ parameters: default: false - name: vmImage displayName: "VM Image" - type: object + type: string default: windows-2025 -- name: vmImageArm64 - displayName: "VM Image (ARM64)" - type: object - default: windows-11-arm resources: pipelines: @@ -164,10 +160,11 @@ stages: - ${{ if and(eq(parameters.BuildToPublish, 'current'), eq(parameters.BuildToPackage, 'current')) }}: - stage: Build displayName: Build binaries + pool: + vmImage: ${{ parameters.vmImage }} jobs: - template: stage-build.yml parameters: - pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} DoPGO: ${{ parameters.DoPGO }} DoPGOARM64: ${{ parameters.DoPGOARM64 }} @@ -189,10 +186,11 @@ stages: - stage: Sign displayName: Sign binaries dependsOn: Build + pool: + vmImage: ${{ parameters.vmImage }} jobs: - template: stage-sign.yml parameters: - pool: ${{ parameters.vmImage }} SigningCertificate: ${{ parameters.SigningCertificate }} DoFreethreaded: ${{ parameters.DoFreethreaded }} @@ -204,42 +202,38 @@ stages: ${{ else }}: displayName: Generate layouts from prior build dependsOn: [] + pool: + vmImage: ${{ parameters.vmImage }} jobs: - template: stage-layout-full.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - template: stage-layout-symbols.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoEmbed, 'true') }}: - template: stage-layout-embed.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-layout-nuget.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoMSIX, 'true') }}: - template: stage-layout-msix.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-layout-pymanager.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} DoEmbed: ${{ parameters.DoEmbed }} @@ -248,6 +242,8 @@ stages: - stage: Pack dependsOn: Layout displayName: Pack + pool: + vmImage: ${{ parameters.vmImage }} jobs: #- ${{ if eq(parameters.DoEmbed, 'true') }}: # - template: stage-pack-embed.yml @@ -256,7 +252,6 @@ stages: - ${{ if eq(parameters.DoMSI, 'true') }}: - template: stage-msi.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPackage: ${{ parameters.BuildToPackage }} DoARM64: ${{ parameters.DoARM64}} DoFreethreaded: ${{ parameters.DoFreethreaded }} @@ -264,44 +259,38 @@ stages: - ${{ if eq(parameters.DoMSIX, 'true') }}: - template: stage-pack-msix.yml parameters: - pool: ${{ parameters.vmImage }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-pack-nuget.yml parameters: - pool: ${{ parameters.vmImage }} ${{ if eq(parameters.SignNuget, 'true') }}: SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-pack-pymanager.yml parameters: - pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} DoEmbed: ${{ parameters.DoEmbed }} SigningCertificate: ${{ iif(eq(parameters.SigningCertificate, 'Unsigned'), '', parameters.SigningCertificate) }} - stage: Test dependsOn: Pack + pool: + vmImage: ${{ parameters.vmImage }} jobs: - ${{ if eq(parameters.DoEmbed, 'true') }}: - template: stage-test-embed.yml - parameters: - pool: ${{ parameters.vmImage }} - ${{ if and(eq(parameters.DoMSI, 'true'), eq(parameters.TestMSI, 'true')) }}: - template: stage-test-msi.yml parameters: - pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-test-nuget.yml parameters: - pool: ${{ parameters.vmImage }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-test-pymanager.yml parameters: - pool: ${{ parameters.vmImage }} DoEmbed: ${{ parameters.DoEmbed }} DoFreethreaded: ${{ parameters.DoFreethreaded }} @@ -311,23 +300,22 @@ stages: dependsOn: - ${{ if eq(parameters.BuildToPublish, 'current') }}: - Test + pool: + vmImage: ${{ parameters.vmImage }} jobs: - ${{ if eq(parameters.DoPyManager, 'true') }}: - template: stage-publish-pymanager.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPublish: ${{ parameters.BuildToPublish }} DoEmbed: ${{ parameters.DoEmbed }} DoFreethreaded: ${{ parameters.DoFreethreaded }} - ${{ if eq(parameters.DoMSI, 'true') }}: - template: stage-publish-pythonorg.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPublish: ${{ parameters.BuildToPublish }} DoEmbed: ${{ parameters.DoEmbed }} IncludeGPG: ${{ parameters.DoGPG }} - ${{ if eq(parameters.DoNuget, 'true') }}: - template: stage-publish-nugetorg.yml parameters: - pool: ${{ parameters.vmImage }} BuildToPublish: ${{ parameters.BuildToPublish }} diff --git a/windows-release/stage-build.yml b/windows-release/stage-build.yml index 18a8d9ee..a1144fe7 100644 --- a/windows-release/stage-build.yml +++ b/windows-release/stage-build.yml @@ -1,7 +1,4 @@ parameters: - pool: windows-latest - arm64pool: - name: 'Windows ARM64' DoPGO: false # DoPGOARM64 only applies if DoPGO is also true DoPGOARM64: true @@ -14,13 +11,6 @@ jobs: - job: Build_Docs displayName: Docs build - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -48,13 +38,6 @@ jobs: - job: Build_Python displayName: Python build - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -188,13 +171,6 @@ jobs: - job: Build_Python_PGO_Native displayName: Python PGO build - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -235,13 +211,6 @@ jobs: - job: Build_Python_PGO_1 displayName: Python PGO build - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -283,11 +252,7 @@ jobs: timeoutInMinutes: 300 pool: - ${{ if containsValue(parameters.arm64pool, 'name') }}: - ${{ each p in parameters.arm64pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.arm64pool }} + vmImage: windows-11-arm workspace: clean: all @@ -323,13 +288,6 @@ jobs: displayName: Merge PGO profile dependsOn: Build_Python_PGO_2 - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -367,13 +325,6 @@ jobs: - job: TclTk_Lib displayName: Publish Tcl/Tk Library - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - variables: IncludeLLVM: false diff --git a/windows-release/stage-layout-embed.yml b/windows-release/stage-layout-embed.yml index c81049f2..6380e4d1 100644 --- a/windows-release/stage-layout-embed.yml +++ b/windows-release/stage-layout-embed.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current SigningCertificate: '' @@ -7,13 +6,6 @@ jobs: - job: Make_Embed_Layout displayName: Make embeddable layout - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-layout-full.yml b/windows-release/stage-layout-full.yml index 510881a8..4839666e 100644 --- a/windows-release/stage-layout-full.yml +++ b/windows-release/stage-layout-full.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current DoFreethreaded: false SigningCertificate: '' @@ -8,13 +7,6 @@ jobs: - job: Make_Layouts displayName: Make layouts - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-layout-msix.yml b/windows-release/stage-layout-msix.yml index 2dffc6ad..16df4133 100644 --- a/windows-release/stage-layout-msix.yml +++ b/windows-release/stage-layout-msix.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current SigningCertificate: '' @@ -7,13 +6,6 @@ jobs: - job: Make_MSIX_Layout displayName: Make MSIX layout - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-layout-nuget.yml b/windows-release/stage-layout-nuget.yml index 2ec2b34c..a1fb8782 100644 --- a/windows-release/stage-layout-nuget.yml +++ b/windows-release/stage-layout-nuget.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current DoFreethreaded: false SigningCertificate: '' @@ -8,13 +7,6 @@ jobs: - job: Make_Nuget_Layout displayName: Make Nuget layout - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-layout-pymanager.yml b/windows-release/stage-layout-pymanager.yml index 3c8cca4f..2aeaf143 100644 --- a/windows-release/stage-layout-pymanager.yml +++ b/windows-release/stage-layout-pymanager.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current DoFreethreaded: false DoEmbed: false @@ -10,13 +9,6 @@ jobs: - job: Make_PyManager_Layouts displayName: Make PyManager layouts - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-layout-symbols.yml b/windows-release/stage-layout-symbols.yml index f31fb9a7..a1268a40 100644 --- a/windows-release/stage-layout-symbols.yml +++ b/windows-release/stage-layout-symbols.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current DoFreethreaded: false Packages: @@ -23,13 +22,6 @@ jobs: - job: Layout_Symbols displayName: Make symbols layout - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-msi.yml b/windows-release/stage-msi.yml index 25fed222..4342a470 100644 --- a/windows-release/stage-msi.yml +++ b/windows-release/stage-msi.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPackage: current DoARM64: true DoFreethreaded: false @@ -9,13 +8,6 @@ jobs: - job: Make_MSI displayName: Make MSI - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - variables: - ${{ if eq(parameters.SigningCertificate, 'PythonSoftwareFoundation') }}: - group: CPythonSign diff --git a/windows-release/stage-pack-msix.yml b/windows-release/stage-pack-msix.yml index c7bda0e4..cb732b09 100644 --- a/windows-release/stage-pack-msix.yml +++ b/windows-release/stage-pack-msix.yml @@ -1,18 +1,10 @@ parameters: - pool: windows-latest SigningCertificate: '' jobs: - job: Pack_MSIX displayName: Pack MSIX bundles - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -100,13 +92,6 @@ jobs: dependsOn: - Pack_MSIX - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-pack-nuget.yml b/windows-release/stage-pack-nuget.yml index 6254bbe9..cc9735a9 100644 --- a/windows-release/stage-pack-nuget.yml +++ b/windows-release/stage-pack-nuget.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest DoFreethreaded: false SigningCertificate: '' @@ -7,13 +6,6 @@ jobs: - job: Pack_Nuget displayName: Pack Nuget bundles - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-pack-pymanager.yml b/windows-release/stage-pack-pymanager.yml index ef755c9d..84fc6911 100644 --- a/windows-release/stage-pack-pymanager.yml +++ b/windows-release/stage-pack-pymanager.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest DoFreethreaded: false DoEmbed: false SigningCertificate: '' @@ -28,13 +27,6 @@ jobs: - job: Pack_PyManager displayName: Pack PyManager bundle - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-publish-nugetorg.yml b/windows-release/stage-publish-nugetorg.yml index fcbacacc..0b5db4e4 100644 --- a/windows-release/stage-publish-nugetorg.yml +++ b/windows-release/stage-publish-nugetorg.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPublish: current jobs: @@ -7,13 +6,6 @@ jobs: displayName: Publish Nuget packages condition: and(succeeded(), ne(variables['SkipNugetPublish'], 'true')) - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-publish-pymanager.yml b/windows-release/stage-publish-pymanager.yml index aa383512..f24f5073 100644 --- a/windows-release/stage-publish-pymanager.yml +++ b/windows-release/stage-publish-pymanager.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPublish: current DoFreethreaded: false DoEmbed: false @@ -30,13 +29,6 @@ jobs: displayName: Publish PyManager packages to python.org condition: and(succeeded(), ne(variables['SkipPythonOrgPublish'], 'true')) - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - variables: - group: PythonOrgPublish diff --git a/windows-release/stage-publish-pythonorg.yml b/windows-release/stage-publish-pythonorg.yml index 18f2dc5a..58d5fd7c 100644 --- a/windows-release/stage-publish-pythonorg.yml +++ b/windows-release/stage-publish-pythonorg.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest BuildToPublish: current DoEmbed: true IncludeGPG: false @@ -10,13 +9,6 @@ jobs: displayName: Publish python.org packages condition: and(succeeded(), ne(variables['SkipPythonOrgPublish'], 'true')) - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - variables: - group: PythonOrgPublish diff --git a/windows-release/stage-sign.yml b/windows-release/stage-sign.yml index b79066d5..a611e424 100644 --- a/windows-release/stage-sign.yml +++ b/windows-release/stage-sign.yml @@ -1,5 +1,4 @@ parameters: - pool: windows-latest Include: '*.exe, *.dll, *.pyd, *.cat, *.ps1' Exclude: 'vcruntime*, libffi*, libcrypto*, libssl*' SigningCertificate: '' @@ -10,13 +9,6 @@ jobs: - job: Sign_Files displayName: Sign Python binaries - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all @@ -85,13 +77,6 @@ jobs: - job: Mark_Unsigned displayName: Tag unsigned build - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - steps: - checkout: none diff --git a/windows-release/stage-test-embed.yml b/windows-release/stage-test-embed.yml index 65e51f7b..a42fa5ef 100644 --- a/windows-release/stage-test-embed.yml +++ b/windows-release/stage-test-embed.yml @@ -1,17 +1,7 @@ -parameters: - pool: windows-latest - jobs: - job: Test_Embed displayName: Test Embed - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-test-msi.yml b/windows-release/stage-test-msi.yml index 87121491..abf4a408 100644 --- a/windows-release/stage-test-msi.yml +++ b/windows-release/stage-test-msi.yml @@ -1,18 +1,10 @@ parameters: - pool: windows-latest DoFreethreaded: false jobs: - job: Test_MSI displayName: Test MSI - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-test-nuget.yml b/windows-release/stage-test-nuget.yml index 2099920c..9ab4b48e 100644 --- a/windows-release/stage-test-nuget.yml +++ b/windows-release/stage-test-nuget.yml @@ -1,17 +1,7 @@ -parameters: - pool: windows-latest - jobs: - job: Test_Nuget displayName: Test Nuget - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all diff --git a/windows-release/stage-test-pymanager.yml b/windows-release/stage-test-pymanager.yml index bb4b5adc..667a6700 100644 --- a/windows-release/stage-test-pymanager.yml +++ b/windows-release/stage-test-pymanager.yml @@ -1,5 +1,4 @@ parameters: - vmImage: windows-latest DoEmbed: false DoFreethreaded: false @@ -7,13 +6,6 @@ jobs: - job: Test_PyManager displayName: Test PyManager - pool: - ${{ if containsValue(parameters.pool, 'name') }}: - ${{ each p in parameters.pool }}: - ${{ p.key }}: ${{ p.value }} - ${{ else }}: - vmImage: ${{ parameters.pool }} - workspace: clean: all From 3c3301356fae02b192b524787b34db5ca1c04703 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Tue, 24 Feb 2026 19:24:52 +0000 Subject: [PATCH 4/4] Revert to custom VM --- windows-release/stage-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows-release/stage-build.yml b/windows-release/stage-build.yml index a1144fe7..1433b8ea 100644 --- a/windows-release/stage-build.yml +++ b/windows-release/stage-build.yml @@ -252,7 +252,7 @@ jobs: timeoutInMinutes: 300 pool: - vmImage: windows-11-arm + name: 'Windows ARM64' workspace: clean: all