]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Improve the Windows release build scripts (GH-30771)
authorSteve Dower <steve.dower@python.org>
Sat, 22 Jan 2022 01:13:16 +0000 (01:13 +0000)
committerGitHub <noreply@github.com>
Sat, 22 Jan 2022 01:13:16 +0000 (01:13 +0000)
Update to windows-2022 image
Promote queue variables to parameters for better UI
Structure build steps using parameters instead of conditions for simpler status display

17 files changed:
.azure-pipelines/ci.yml
.azure-pipelines/pr.yml
.azure-pipelines/windows-release.yml
.azure-pipelines/windows-release/stage-build.yml
.azure-pipelines/windows-release/stage-layout-embed.yml
.azure-pipelines/windows-release/stage-layout-full.yml
.azure-pipelines/windows-release/stage-layout-msix.yml
.azure-pipelines/windows-release/stage-layout-nuget.yml
.azure-pipelines/windows-release/stage-msi.yml
.azure-pipelines/windows-release/stage-pack-msix.yml
.azure-pipelines/windows-release/stage-publish-nugetorg.yml
.azure-pipelines/windows-release/stage-publish-pythonorg.yml
.azure-pipelines/windows-release/stage-publish-store.yml
.azure-pipelines/windows-release/stage-sign.yml
.azure-pipelines/windows-release/stage-test-embed.yml
.azure-pipelines/windows-release/stage-test-msi.yml
.azure-pipelines/windows-release/stage-test-nuget.yml

index 25cc726504b376e7e9f38ac164a13f3dbd16305b..638625540e44c3e58b1700a03ab6917d49b75639 100644 (file)
@@ -98,7 +98,7 @@ jobs:
   condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   strategy:
     matrix:
index e2aae324f211bec1a2078f6af7cdc17cc4be1196..8b065e6caea538110c7a12144908389124136648 100644 (file)
@@ -98,7 +98,7 @@ jobs:
   condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   strategy:
     matrix:
index 3d072e3b43e17e06d680f2c10cebdebd3872c200..338c305ecdc0a1fba8e0fdc6c1a49af7e344e37f 100644 (file)
 name: Release_$(Build.SourceBranchName)_$(SourceTag)_$(Date:yyyyMMdd)$(Rev:.rr)
 
+parameters:
+- name: GitRemote
+  displayName: "Git remote"
+  type: string
+  default: python
+  values:
+  - 'python'
+  - 'pablogsal'
+  - 'ambv'
+  - '(Other)'
+- name: GitRemote_Other
+  displayName: "If Other, specify Git remote"
+  type: string
+  default: 'python'
+- name: SourceTag
+  displayName: "Git tag"
+  type: string
+  default: main
+- name: DoPublish
+  displayName: "Publish release"
+  type: boolean
+  default: false
+- name: SigningCertificate
+  displayName: "Code signing certificate"
+  type: string
+  default: 'Python Software Foundation'
+  values:
+  - 'Python Software Foundation'
+  - 'TestSign'
+  - 'Unsigned'
+- name: SigningDescription
+  displayName: "Signature description"
+  type: string
+  default: 'Built: $(Build.BuildNumber)'
+- name: DoPGO
+  displayName: "Run PGO"
+  type: boolean
+  default: true
+- name: DoLayout
+  displayName: "Produce full layout artifact"
+  type: boolean
+  default: true
+- name: DoMSIX
+  displayName: "Produce Store packages"
+  type: boolean
+  default: true
+- name: DoNuget
+  displayName: "Produce Nuget packages"
+  type: boolean
+  default: true
+- name: DoEmbed
+  displayName: "Produce embeddable package"
+  type: boolean
+  default: true
+- name: DoMSI
+  displayName: "Produce EXE/MSI installer"
+  type: boolean
+  default: true
+- name: BuildToPublish
+  displayName: "Build number to publish (0 to skip)"
+  type: number
+  default: '0'
+
 variables:
     __RealSigningCertificate: 'Python Software Foundation'
+    ${{ if ne(parameters.GitRemote, '(Other)') }}:
+      GitRemote: ${{ parameters.GitRemote }}
+    ${{ else }}:
+      GitRemote: ${{ parameters.GitRemote_Other }}
+    SourceTag: ${{ parameters.SourceTag }}
+    DoPGO: ${{ parameters.DoPGO }}
+    ${{ if ne(parameters.SigningCertificate, 'Unsigned') }}:
+      SigningCertificate: ${{ parameters.SigningCertificate }}
+    SigningDescription: ${{ parameters.SigningDescription }}
+    DoLayout: ${{ parameters.DoLayout }}
+    DoMSIX: ${{ parameters.DoMSIX }}
+    DoNuget: ${{ parameters.DoNuget }}
+    DoEmbed: ${{ parameters.DoEmbed }}
+    DoMSI: ${{ parameters.DoMSI }}
+    DoPublish: ${{ parameters.DoPublish }}
 # QUEUE TIME VARIABLES
-#   GitRemote: python
-#   SourceTag:
-#   DoPGO: true
-#   SigningCertificate: 'Python Software Foundation'
-#   SigningDescription: 'Built: $(Build.BuildNumber)'
-#   DoLayout: true
-#   DoMSIX: true
-#   DoNuget: true
-#   DoEmbed: true
-#   DoMSI: true
-#   DoPublish: false
-#   PyDotOrgUsername: ''
-#   PyDotOrgServer: ''
-#   BuildToPublish: ''
+#    PyDotOrgUsername: ''
+#    PyDotOrgServer: ''
 
 trigger: none
 pr: none
 
 stages:
-- stage: Build
-  displayName: Build binaries
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-build.yml
-
-- stage: Sign
-  displayName: Sign binaries
-  dependsOn: Build
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-sign.yml
-
-- stage: Layout
-  displayName: Generate layouts
-  dependsOn: Sign
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-layout-full.yml
-  - template: windows-release/stage-layout-embed.yml
-  - template: windows-release/stage-layout-nuget.yml
-
-- stage: Pack
-  dependsOn: Layout
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-pack-nuget.yml
-
-- stage: Test
-  dependsOn: Pack
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-test-embed.yml
-  - template: windows-release/stage-test-nuget.yml
-
-- stage: Layout_MSIX
-  displayName: Generate MSIX layouts
-  dependsOn: Sign
-  condition: and(succeeded(), and(eq(variables['DoMSIX'], 'true'), not(variables['BuildToPublish'])))
-  jobs:
-  - template: windows-release/stage-layout-msix.yml
-
-- stage: Pack_MSIX
-  displayName: Package MSIX
-  dependsOn: Layout_MSIX
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-pack-msix.yml
-
-- stage: Build_MSI
-  displayName: Build MSI installer
-  dependsOn: Sign
-  condition: and(succeeded(), and(eq(variables['DoMSI'], 'true'), not(variables['BuildToPublish'])))
-  jobs:
-  - template: windows-release/stage-msi.yml
-
-- stage: Test_MSI
-  displayName: Test MSI installer
-  dependsOn: Build_MSI
-  condition: and(succeeded(), not(variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-test-msi.yml
-
-- stage: PublishPyDotOrg
-  displayName: Publish to python.org
-  dependsOn: ['Test_MSI', 'Test']
-  condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish'])))
-  jobs:
-  - template: windows-release/stage-publish-pythonorg.yml
-
-- stage: PublishNuget
-  displayName: Publish to nuget.org
-  dependsOn: Test
-  condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish'])))
-  jobs:
-  - template: windows-release/stage-publish-nugetorg.yml
-
-- stage: PublishStore
-  displayName: Publish to Store
-  dependsOn: Pack_MSIX
-  condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish'])))
-  jobs:
-  - template: windows-release/stage-publish-store.yml
-
-
-- stage: PublishExistingPyDotOrg
-  displayName: Publish existing build to python.org
-  dependsOn: []
-  condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-publish-pythonorg.yml
-
-- stage: PublishExistingNuget
-  displayName: Publish existing build to nuget.org
-  dependsOn: []
-  condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-publish-nugetorg.yml
-
-- stage: PublishExistingStore
-  displayName: Publish existing build to Store
-  dependsOn: []
-  condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish']))
-  jobs:
-  - template: windows-release/stage-publish-store.yml
+- ${{ if eq(parameters.BuildToPublish, '0') }}:
+  - stage: Build
+    displayName: Build binaries
+    jobs:
+    - template: windows-release/stage-build.yml
+
+  - stage: Sign
+    displayName: Sign binaries
+    dependsOn: Build
+    jobs:
+    - template: windows-release/stage-sign.yml
+
+  - stage: Layout
+    displayName: Generate layouts
+    dependsOn: Sign
+    jobs:
+    - template: windows-release/stage-layout-full.yml
+    - template: windows-release/stage-layout-embed.yml
+    - template: windows-release/stage-layout-nuget.yml
+
+  - stage: Pack
+    dependsOn: Layout
+    jobs:
+    - template: windows-release/stage-pack-nuget.yml
+
+  - stage: Test
+    dependsOn: Pack
+    jobs:
+    - template: windows-release/stage-test-embed.yml
+    - template: windows-release/stage-test-nuget.yml
+
+  - stage: Layout_MSIX
+    displayName: Generate MSIX layouts
+    dependsOn: Sign
+    condition: and(succeeded(), eq(variables['DoMSIX'], 'true'))
+    jobs:
+    - template: windows-release/stage-layout-msix.yml
+
+  - stage: Pack_MSIX
+    displayName: Package MSIX
+    dependsOn: Layout_MSIX
+    jobs:
+    - template: windows-release/stage-pack-msix.yml
+
+  - stage: Build_MSI
+    displayName: Build MSI installer
+    dependsOn: Sign
+    condition: and(succeeded(), eq(variables['DoMSI'], 'true'))
+    jobs:
+    - template: windows-release/stage-msi.yml
+
+  - stage: Test_MSI
+    displayName: Test MSI installer
+    dependsOn: Build_MSI
+    jobs:
+    - template: windows-release/stage-test-msi.yml
+
+  - ${{ if eq(parameters.DoPublish, 'true') }}:
+    - stage: PublishPyDotOrg
+      displayName: Publish to python.org
+      dependsOn: ['Test_MSI', 'Test']
+      jobs:
+      - template: windows-release/stage-publish-pythonorg.yml
+
+    - stage: PublishNuget
+      displayName: Publish to nuget.org
+      dependsOn: Test
+      jobs:
+      - template: windows-release/stage-publish-nugetorg.yml
+
+    - stage: PublishStore
+      displayName: Publish to Store
+      dependsOn: Pack_MSIX
+      jobs:
+      - template: windows-release/stage-publish-store.yml
+
+- ${{ else }}:
+  - stage: PublishExisting
+    displayName: Publish existing build
+    dependsOn: []
+    condition: and(succeeded(), eq(variables['DoPublish'], 'true'))
+    jobs:
+    - template: windows-release/stage-publish-pythonorg.yml
+      parameters:
+        BuildToPublish: ${{ parameters.BuildToPublish }}
+
+    - template: windows-release/stage-publish-nugetorg.yml
+      parameters:
+        BuildToPublish: ${{ parameters.BuildToPublish }}
+
+    - template: windows-release/stage-publish-store.yml
+      parameters:
+        BuildToPublish: ${{ parameters.BuildToPublish }}
index 69f3b1e16451ec557c7515162335fcc4e8902dca..f70414ba211452b96bd06668bce6e917351cc7d7 100644 (file)
@@ -2,8 +2,8 @@ jobs:
 - job: Build_Docs
   displayName: Docs build
   pool:
-    name: 'Windows Release'
-    #vmImage: windows-2019
+    #name: 'Windows Release'
+    vmImage: windows-2022
 
   workspace:
     clean: all
@@ -45,7 +45,7 @@ jobs:
   displayName: Python build
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
@@ -91,7 +91,7 @@ jobs:
   condition: and(succeeded(), ne(variables['DoPGO'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
@@ -141,7 +141,7 @@ jobs:
   displayName: Publish Tcl/Tk Library
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index dbccdead143b214896834f04627a6704194e97c1..c8b23d308d81e9534ab8565216812c707b714f42 100644 (file)
@@ -4,7 +4,7 @@ jobs:
   condition: and(succeeded(), eq(variables['DoEmbed'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index 8fc8da3e52fe03622e93daede26f87343f080af4..0ba2fc017d987a4b2fb9f0aacc7e13c6042bc4d3 100644 (file)
@@ -4,7 +4,7 @@ jobs:
   condition: and(succeeded(), eq(variables['DoLayout'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index def4f7d3c6bee5fa50104572a34543fbb004466b..6efd327bdb32e5201fed98c26ff250cba332d785 100644 (file)
@@ -3,7 +3,7 @@ jobs:
   displayName: Make MSIX layout
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index 41cdff850e83be351a6aefffec63ce1ea369a188..b60a324dd90e3d094fe24bdd6f46302ce889393f 100644 (file)
@@ -4,7 +4,7 @@ jobs:
   condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index 9b965b09c14748145210cd01523095a1b7db6f56..f14bc9a45ae38183a0372d26ff73a39edeb69fd7 100644 (file)
@@ -4,7 +4,7 @@ jobs:
   condition: and(succeeded(), not(variables['SigningCertificate']))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   variables:
     ReleaseUri: http://www.python.org/{arch}
index 9f7919ee64706b4ccdb4baae73b08c56152254ee..95988151a03db7ea93dd34751f68db576d5ec88a 100644 (file)
@@ -3,7 +3,7 @@ jobs:
   displayName: Pack MSIX bundles
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index d5edf44ef5c2ec26a3e3a25898f47ad0fcfbdd2a..38f6772afcde3fd0a545320c8c737bc573f71f01 100644 (file)
@@ -1,10 +1,13 @@
+parameters:
+  BuildToPublish: ''
+
 jobs:
 - job: Publish_Nuget
   displayName: Publish Nuget packages
   condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
@@ -12,24 +15,25 @@ jobs:
   steps:
   - checkout: none
 
-  - task: DownloadBuildArtifacts@0
-    displayName: 'Download artifact: nuget'
-    condition: and(succeeded(), not(variables['BuildToPublish']))
-    inputs:
-      artifactName: nuget
-      downloadPath: $(Build.BinariesDirectory)
+  - ${{ if parameters.BuildToPublish }}:
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download artifact from ${{ parameters.BuildToPublish }}'
+      inputs:
+        artifactName: nuget
+        downloadPath: $(Build.BinariesDirectory)
+        buildType: specific
+        project: $(System.TeamProject)
+        pipeline: $(Build.DefinitionName)
+        buildVersionToDownload: specific
+        buildId: ${{ parameters.BuildToPublish }}
+
+  - ${{ else }}:
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download artifact: nuget'
+      inputs:
+        artifactName: nuget
+        downloadPath: $(Build.BinariesDirectory)
 
-  - task: DownloadBuildArtifacts@0
-    displayName: 'Download artifact: nuget'
-    condition: and(succeeded(), variables['BuildToPublish'])
-    inputs:
-      artifactName: nuget
-      downloadPath: $(Build.BinariesDirectory)
-      buildType: specific
-      project: cpython
-      pipeline: Windows-Release
-      buildVersionToDownload: specific
-      buildId: $(BuildToPublish)
 
   - powershell: 'gci pythonarm*.nupkg | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del'
     displayName: 'Prevent publishing ARM/ARM64 packages'
index 4b88bdebf8cc4138b2c42a28c8046e2b2e8062d4..ef95572f7d165f4efa0750d5fc47a9a096dc61bc 100644 (file)
@@ -1,10 +1,13 @@
+parameters:
+  BuildToPublish: ''
+
 jobs:
 - job: Publish_Python
   displayName: Publish python.org packages
   condition: and(succeeded(), and(eq(variables['DoMSI'], 'true'), eq(variables['DoEmbed'], 'true')))
 
   pool:
-    #vmImage: windows-2019
+    #vmImage: windows-2022
     name: 'Windows Release'
 
   workspace:
@@ -18,62 +21,61 @@ jobs:
     inputs:
       versionSpec: '>=3.6'
 
-  - task: DownloadPipelineArtifact@1
-    displayName: 'Download artifact: Doc'
-    condition: and(succeeded(), not(variables['BuildToPublish']))
-    inputs:
-      artifactName: Doc
-      targetPath: $(Build.BinariesDirectory)\Doc
-
-  - task: DownloadPipelineArtifact@1
-    displayName: 'Download artifact: msi'
-    condition: and(succeeded(), not(variables['BuildToPublish']))
-    inputs:
-      artifactName: msi
-      targetPath: $(Build.BinariesDirectory)\msi
+  - ${{ if parameters.BuildToPublish }}:
+    - task: DownloadPipelineArtifact@1
+      displayName: 'Download artifact from ${{ parameters.BuildToPublish }}: Doc'
+      inputs:
+        artifactName: Doc
+        targetPath: $(Build.BinariesDirectory)\Doc
+        buildType: specific
+        project: $(System.TeamProject)
+        pipeline: $(Build.DefinitionName)
+        buildVersionToDownload: specific
+        buildId: ${{ parameters.BuildToPublish }}
+
+    - task: DownloadPipelineArtifact@1
+      displayName: 'Download artifact from ${{ parameters.BuildToPublish }}: msi'
+      inputs:
+        artifactName: msi
+        targetPath: $(Build.BinariesDirectory)\msi
+        buildType: specific
+        project: $(System.TeamProject)
+        pipeline: $(Build.DefinitionName)
+        buildVersionToDownload: specific
+        buildId: ${{ parameters.BuildToPublish }}
+
+    # Note that embed is a 'build' artifact, not a 'pipeline' artifact
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download artifact from ${{ parameters.BuildToPublish }}: embed'
+      inputs:
+        artifactName: embed
+        downloadPath: $(Build.BinariesDirectory)
+        buildType: specific
+        project: $(System.TeamProject)
+        pipeline: $(Build.DefinitionName)
+        buildVersionToDownload: specific
+        buildId: ${{ parameters.BuildToPublish }}
+
+  - ${{ else }}:
+    - task: DownloadPipelineArtifact@1
+      displayName: 'Download artifact: Doc'
+      inputs:
+        artifactName: Doc
+        targetPath: $(Build.BinariesDirectory)\Doc
+
+    - task: DownloadPipelineArtifact@1
+      displayName: 'Download artifact: msi'
+      inputs:
+        artifactName: msi
+        targetPath: $(Build.BinariesDirectory)\msi
+
+    # Note that embed is a 'build' artifact, not a 'pipeline' artifact
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download artifact: embed'
+      inputs:
+        artifactName: embed
+        downloadPath: $(Build.BinariesDirectory)
 
-  - task: DownloadBuildArtifacts@0
-    displayName: 'Download artifact: embed'
-    condition: and(succeeded(), not(variables['BuildToPublish']))
-    inputs:
-      artifactName: embed
-      downloadPath: $(Build.BinariesDirectory)
-
-  - task: DownloadPipelineArtifact@1
-    displayName: 'Download artifact from $(BuildToPublish): Doc'
-    condition: and(succeeded(), variables['BuildToPublish'])
-    inputs:
-      artifactName: Doc
-      targetPath: $(Build.BinariesDirectory)\Doc
-      buildType: specific
-      project: cpython
-      pipeline: 21
-      buildVersionToDownload: specific
-      buildId: $(BuildToPublish)
-
-  - task: DownloadPipelineArtifact@1
-    displayName: 'Download artifact from $(BuildToPublish): msi'
-    condition: and(succeeded(), variables['BuildToPublish'])
-    inputs:
-      artifactName: msi
-      targetPath: $(Build.BinariesDirectory)\msi
-      buildType: specific
-      project: cpython
-      pipeline: 21
-      buildVersionToDownload: specific
-      buildId: $(BuildToPublish)
-
-  - task: DownloadBuildArtifacts@0
-    displayName: 'Download artifact from $(BuildToPublish): embed'
-    condition: and(succeeded(), variables['BuildToPublish'])
-    inputs:
-      artifactName: embed
-      downloadPath: $(Build.BinariesDirectory)
-      buildType: specific
-      project: cpython
-      pipeline: Windows-Release
-      buildVersionToDownload: specific
-      buildId: $(BuildToPublish)
 
   - powershell: 'gci *embed-arm*.zip | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del'
     displayName: 'Prevent publishing ARM/ARM64 packages'
@@ -105,6 +107,7 @@ jobs:
       "$(Build.SourcesDirectory)\Tools\msi\purge.py"
       (gci msi\*\python-*.exe | %{ $_.Name -replace 'python-(.+?)(-|\.exe).+', '$1' } | select -First 1)
     workingDirectory: $(Build.BinariesDirectory)
+    condition: and(succeeded(), eq(variables['SigningCertificate'], variables['__RealSigningCertificate']))
     displayName: 'Purge CDN'
 
   - powershell: |
@@ -124,7 +127,7 @@ jobs:
         Write-Error "Failed to validate $failures installers"
         exit 1
       }
-    #condition: and(succeeded(), eq(variables['SigningCertificate'], variables['__RealSigningCertificate']))
+    condition: and(succeeded(), eq(variables['SigningCertificate'], variables['__RealSigningCertificate']))
     workingDirectory: $(Build.BinariesDirectory)
     displayName: 'Test layouts'
 
index e0512b95f27da822e30076943007bbfcd27dff6e..f3d4c80be91384d20f5b5e3918c4db5f03bbc16e 100644 (file)
@@ -1,10 +1,13 @@
+parameters:
+  BuildToPublish: ''
+
 jobs:
 - job: Publish_Store
   displayName: Publish Store packages
   condition: and(succeeded(), eq(variables['DoMSIX'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
@@ -12,24 +15,24 @@ jobs:
   steps:
   - checkout: none
 
-  - task: DownloadBuildArtifacts@0
-    displayName: 'Download artifact: msixupload'
-    condition: and(succeeded(), not(variables['BuildToPublish']))
-    inputs:
-      artifactName: msixupload
-      downloadPath: $(Build.BinariesDirectory)
+  - ${{ if parameters.BuildToPublish }}:
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download artifact: msixupload'
+      inputs:
+        artifactName: msixupload
+        downloadPath: $(Build.BinariesDirectory)
+        buildType: specific
+        project: cpython
+        pipeline: Windows-Release
+        buildVersionToDownload: specific
+        buildId: ${{ parameters.BuildToPublish }}
 
-  - task: DownloadBuildArtifacts@0
-    displayName: 'Download artifact: msixupload'
-    condition: and(succeeded(), variables['BuildToPublish'])
-    inputs:
-      artifactName: msixupload
-      downloadPath: $(Build.BinariesDirectory)
-      buildType: specific
-      project: cpython
-      pipeline: Windows-Release
-      buildVersionToDownload: specific
-      buildId: $(BuildToPublish)
+  - ${{ else }}:
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download artifact: msixupload'
+      inputs:
+        artifactName: msixupload
+        downloadPath: $(Build.BinariesDirectory)
 
   # TODO: eq(variables['SigningCertificate'], variables['__RealSigningCertificate'])
   # If we are not real-signed, DO NOT PUBLISH
index d43e077186c42c7b528ec0111fff04093b49fd9e..4481aa86edc2ccfa7bdae8bf6f4e68ffcc714821 100644 (file)
@@ -120,7 +120,7 @@ jobs:
   condition: and(succeeded(), not(variables['SigningCertificate']))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   steps:
   - checkout: none
index d99bd74722bacb5488dbc3f66968837818693aeb..252db959930f2f826f6ca8516fd626c79f387643 100644 (file)
@@ -4,7 +4,7 @@ jobs:
   condition: and(succeeded(), eq(variables['DoEmbed'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index 21e38c39590f701e9869c0b522bc58cb042d060a..4b02f478ce0a14ebdd44d9e24df5060fabcb716f 100644 (file)
@@ -3,7 +3,7 @@ jobs:
   displayName: Test MSI
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all
index 94d815e95226ef38853d570cea34c05c09efeea5..c500baf29b4571aa29b2bf9e38275d79b8f82613 100644 (file)
@@ -4,7 +4,7 @@ jobs:
   condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
 
   pool:
-    vmImage: windows-2019
+    vmImage: windows-2022
 
   workspace:
     clean: all