From 0583b441edec6b23b3ea831bb29c19ce8ef45e7d Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 12:37:19 +0000 Subject: [PATCH 1/9] In Windows release builds, invert the condition used when *excluding* ARM64 packages from publish --- .azure-pipelines/windows-release/stage-publish-nugetorg.yml | 2 +- .azure-pipelines/windows-release/stage-publish-pythonorg.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml b/.azure-pipelines/windows-release/stage-publish-nugetorg.yml index a8855f0ace8f59..446dc2b63c47e7 100644 --- a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml +++ b/.azure-pipelines/windows-release/stage-publish-nugetorg.yml @@ -38,7 +38,7 @@ jobs: - powershell: 'gci pythonarm*.nupkg | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del' displayName: 'Prevent publishing ARM64 packages' workingDirectory: '$(Build.BinariesDirectory)\nuget' - condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) + condition: and(succeeded(), ne(variables['PublishARM64'], 'true')) - task: NuGetCommand@2 displayName: Push packages diff --git a/.azure-pipelines/windows-release/stage-publish-pythonorg.yml b/.azure-pipelines/windows-release/stage-publish-pythonorg.yml index be4ef9e0cca891..7a196cb3becffc 100644 --- a/.azure-pipelines/windows-release/stage-publish-pythonorg.yml +++ b/.azure-pipelines/windows-release/stage-publish-pythonorg.yml @@ -81,7 +81,7 @@ jobs: - powershell: 'gci *embed-arm*.zip | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del' displayName: 'Prevent publishing ARM64 packages' workingDirectory: '$(Build.BinariesDirectory)\embed' - condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) + condition: and(succeeded(), ne(variables['PublishARM64'], 'true')) - template: ./gpg-sign.yml From a30fa6c6d6375d06909f134b78568533d1761599 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 12:48:49 +0000 Subject: [PATCH 2/9] Do not publish anything unless the traditional installer works --- .azure-pipelines/windows-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index ae2d1b9da1321d..030b89e4fc4f98 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -175,13 +175,13 @@ stages: - stage: PublishNuget displayName: Publish to nuget.org - dependsOn: Test + dependsOn: ['Test_MSI', 'Test'] jobs: - template: windows-release/stage-publish-nugetorg.yml - stage: PublishStore displayName: Publish to Store - dependsOn: Pack_MSIX + dependsOn: ['Test_MSI', 'Pack_MSIX'] jobs: - template: windows-release/stage-publish-store.yml From c14f4adea7d216ada794579d8c4a821179bb48d5 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 12:53:58 +0000 Subject: [PATCH 3/9] Fix disabling of MSI build --- .azure-pipelines/windows-release.yml | 42 +++++++++++++++++----------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index 030b89e4fc4f98..47cb19c6d630ac 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -151,37 +151,47 @@ stages: 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 - parameters: - ARM64TclTk: ${{ parameters.ARM64TclTk }} + - ${{ if eq(parameters.DoMSI, 'true') }}: + - stage: Build_MSI + displayName: Build MSI installer + dependsOn: Sign + condition: and(succeeded(), eq(variables['DoMSI'], 'true')) + jobs: + - template: windows-release/stage-msi.yml + parameters: + ARM64TclTk: ${{ parameters.ARM64TclTk }} - - stage: Test_MSI - displayName: Test MSI installer - dependsOn: Build_MSI - jobs: - - template: windows-release/stage-test-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'] + ${{ if eq(parameters.DoMSI, 'true') }}: + dependsOn: ['Test_MSI', 'Test'] + ${{ else }}: + dependsOn: 'Test' jobs: - template: windows-release/stage-publish-pythonorg.yml - stage: PublishNuget displayName: Publish to nuget.org - dependsOn: ['Test_MSI', 'Test'] + ${{ if eq(parameters.DoMSI, 'true') }}: + dependsOn: ['Test_MSI', 'Test'] + ${{ else }}: + dependsOn: 'Test' jobs: - template: windows-release/stage-publish-nugetorg.yml - stage: PublishStore displayName: Publish to Store - dependsOn: ['Test_MSI', 'Pack_MSIX'] + ${{ if eq(parameters.DoMSI, 'true') }}: + dependsOn: ['Test_MSI', 'Pack_MSIX'] + ${{ else }}: + dependsOn: 'Pack_MSIX' jobs: - template: windows-release/stage-publish-store.yml From 7803441eee56fba511d43212e61dd0a66a0bb482 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 12:59:49 +0000 Subject: [PATCH 4/9] Improve conditional steps further --- .azure-pipelines/windows-release.yml | 90 ++++++++++++++-------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index 47cb19c6d630ac..d814ffd5e01ede 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -136,14 +136,14 @@ stages: - 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 - parameters: - ARM64TclTk: ${{ parameters.ARM64TclTk }} + - ${{ if eq(parameters.DoMSIX, 'true') }}: + - stage: Layout_MSIX + displayName: Generate MSIX layouts + dependsOn: Sign + jobs: + - template: windows-release/stage-layout-msix.yml + parameters: + ARM64TclTk: ${{ parameters.ARM64TclTk }} - stage: Pack_MSIX displayName: Package MSIX @@ -168,47 +168,49 @@ stages: - template: windows-release/stage-test-msi.yml - ${{ if eq(parameters.DoPublish, 'true') }}: - - stage: PublishPyDotOrg - displayName: Publish to python.org - ${{ if eq(parameters.DoMSI, 'true') }}: - dependsOn: ['Test_MSI', 'Test'] - ${{ else }}: - dependsOn: 'Test' - jobs: - - template: windows-release/stage-publish-pythonorg.yml - - - stage: PublishNuget - displayName: Publish to nuget.org - ${{ if eq(parameters.DoMSI, 'true') }}: - dependsOn: ['Test_MSI', 'Test'] - ${{ else }}: - dependsOn: 'Test' - jobs: - - template: windows-release/stage-publish-nugetorg.yml - - - stage: PublishStore - displayName: Publish to Store - ${{ if eq(parameters.DoMSI, 'true') }}: - dependsOn: ['Test_MSI', 'Pack_MSIX'] - ${{ else }}: - dependsOn: 'Pack_MSIX' - jobs: - - template: windows-release/stage-publish-store.yml + - ${{ if eq(parameters.DoMSI, 'true') }}: + - stage: PublishPyDotOrg + displayName: Publish to python.org + dependsOn: ['Test_MSI', 'Test'] + jobs: + - template: windows-release/stage-publish-pythonorg.yml + + - ${{ if eq(parameters.DoNuget, 'true') }}: + - stage: PublishNuget + displayName: Publish to nuget.org + ${{ if eq(parameters.DoMSI, 'true') }}: + dependsOn: ['Test_MSI', 'Test'] + ${{ else }}: + dependsOn: 'Test' + jobs: + - template: windows-release/stage-publish-nugetorg.yml + + - ${{ if eq(parameters.DoMSIX, 'true') }}: + - stage: PublishStore + displayName: Publish to Store + ${{ if eq(parameters.DoMSI, 'true') }}: + dependsOn: ['Test_MSI', 'Pack_MSIX'] + ${{ else }}: + 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 }} + - ${{ if eq(parameters.DoMSI, 'true') }}: + - template: windows-release/stage-publish-pythonorg.yml + parameters: + BuildToPublish: ${{ parameters.BuildToPublish }} - - template: windows-release/stage-publish-nugetorg.yml - parameters: - BuildToPublish: ${{ parameters.BuildToPublish }} + - ${{ if eq(parameters.DoNuget, 'true') }}: + - template: windows-release/stage-publish-nugetorg.yml + parameters: + BuildToPublish: ${{ parameters.BuildToPublish }} - - template: windows-release/stage-publish-store.yml - parameters: - BuildToPublish: ${{ parameters.BuildToPublish }} + - ${{ if eq(parameters.DoMSIX, 'true') }}: + - template: windows-release/stage-publish-store.yml + parameters: + BuildToPublish: ${{ parameters.BuildToPublish }} From 0e1ee765a40e1c657fdebe9cc7034e090c9b4c07 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 13:00:20 +0000 Subject: [PATCH 5/9] Fix YAML --- .azure-pipelines/windows-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index d814ffd5e01ede..45c734522d25b1 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -171,7 +171,7 @@ stages: - ${{ if eq(parameters.DoMSI, 'true') }}: - stage: PublishPyDotOrg displayName: Publish to python.org - dependsOn: ['Test_MSI', 'Test'] + dependsOn: ['Test_MSI', 'Test'] jobs: - template: windows-release/stage-publish-pythonorg.yml From d71c8bd3fd2061d3501db718a8dc87a03523d220 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 13:01:10 +0000 Subject: [PATCH 6/9] Fix YAML --- .azure-pipelines/windows-release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index 45c734522d25b1..b028cf53ad2dc9 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -145,11 +145,11 @@ stages: parameters: ARM64TclTk: ${{ parameters.ARM64TclTk }} - - stage: Pack_MSIX - displayName: Package MSIX - dependsOn: Layout_MSIX - jobs: - - template: windows-release/stage-pack-msix.yml + - stage: Pack_MSIX + displayName: Package MSIX + dependsOn: Layout_MSIX + jobs: + - template: windows-release/stage-pack-msix.yml - ${{ if eq(parameters.DoMSI, 'true') }}: - stage: Build_MSI From c5a5a962e2fcf04cf19f5b14977f533b33de1735 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 13:09:28 +0000 Subject: [PATCH 7/9] Add overrides for publish steps --- .azure-pipelines/windows-release/stage-publish-nugetorg.yml | 2 +- .azure-pipelines/windows-release/stage-publish-pythonorg.yml | 2 +- .azure-pipelines/windows-release/stage-publish-store.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml b/.azure-pipelines/windows-release/stage-publish-nugetorg.yml index 446dc2b63c47e7..abb9d0f0fd485a 100644 --- a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml +++ b/.azure-pipelines/windows-release/stage-publish-nugetorg.yml @@ -4,7 +4,7 @@ parameters: jobs: - job: Publish_Nuget displayName: Publish Nuget packages - condition: and(succeeded(), eq(variables['DoNuget'], 'true')) + condition: and(succeeded(), eq(variables['DoNuget'], 'true'), ne(variables['SkipNugetPublish'], 'true')) pool: vmImage: windows-2022 diff --git a/.azure-pipelines/windows-release/stage-publish-pythonorg.yml b/.azure-pipelines/windows-release/stage-publish-pythonorg.yml index 7a196cb3becffc..953f728ade3811 100644 --- a/.azure-pipelines/windows-release/stage-publish-pythonorg.yml +++ b/.azure-pipelines/windows-release/stage-publish-pythonorg.yml @@ -4,7 +4,7 @@ parameters: jobs: - job: Publish_Python displayName: Publish python.org packages - condition: and(succeeded(), and(eq(variables['DoMSI'], 'true'), eq(variables['DoEmbed'], 'true'))) + condition: and(succeeded(), eq(variables['DoMSI'], 'true'), eq(variables['DoEmbed'], 'true'), ne(variables['SkipPythonOrgPublish'], 'true')) pool: #vmImage: windows-2022 diff --git a/.azure-pipelines/windows-release/stage-publish-store.yml b/.azure-pipelines/windows-release/stage-publish-store.yml index f3d4c80be91384..0eae21edaa7f8e 100644 --- a/.azure-pipelines/windows-release/stage-publish-store.yml +++ b/.azure-pipelines/windows-release/stage-publish-store.yml @@ -4,7 +4,7 @@ parameters: jobs: - job: Publish_Store displayName: Publish Store packages - condition: and(succeeded(), eq(variables['DoMSIX'], 'true')) + condition: and(succeeded(), eq(variables['DoMSIX'], 'true'), ne(variables['SkipMSIXPublish'], 'true')) pool: vmImage: windows-2022 From 1a7e186a73220975543595e785105f23213cc414 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 13:37:17 +0000 Subject: [PATCH 8/9] Allow overriding the Nuget version number during build --- .azure-pipelines/windows-release.yml | 1 - .../windows-release/stage-pack-nuget.yml | 19 +++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index b028cf53ad2dc9..096ecadc79eb75 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -155,7 +155,6 @@ stages: - stage: Build_MSI displayName: Build MSI installer dependsOn: Sign - condition: and(succeeded(), eq(variables['DoMSI'], 'true')) jobs: - template: windows-release/stage-msi.yml parameters: diff --git a/.azure-pipelines/windows-release/stage-pack-nuget.yml b/.azure-pipelines/windows-release/stage-pack-nuget.yml index 8dfea382c35622..b6e9a47e0397a7 100644 --- a/.azure-pipelines/windows-release/stage-pack-nuget.yml +++ b/.azure-pipelines/windows-release/stage-pack-nuget.yml @@ -32,8 +32,23 @@ jobs: inputs: versionSpec: '>=5.0' - - powershell: | - nuget pack "$(Build.BinariesDirectory)\layout\python.nuspec" -OutputDirectory $(Build.ArtifactStagingDirectory) -NoPackageAnalysis -NonInteractive + - powershell: > + nuget pack + "$(Build.BinariesDirectory)\layout\python.nuspec" + -OutputDirectory $(Build.ArtifactStagingDirectory) + -NoPackageAnalysis + -NonInteractive + condition: and(succeeded(), eq(variables['OverrideNugetVersion'], '')) + displayName: 'Create nuget package' + + - powershell: > + nuget pack + "$(Build.BinariesDirectory)\layout\python.nuspec" + -OutputDirectory $(Build.ArtifactStagingDirectory) + -NoPackageAnalysis + -NonInteractive + -Version "$(OverrideNugetVersion)" + condition: and(succeeded(), ne(variables['OverrideNugetVersion'], '')) displayName: 'Create nuget package' - powershell: | From 3838cae2036b9607751f16aec7252e01e3389360 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 13:42:19 +0000 Subject: [PATCH 9/9] Better conditions --- .azure-pipelines/windows-release/stage-pack-nuget.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/windows-release/stage-pack-nuget.yml b/.azure-pipelines/windows-release/stage-pack-nuget.yml index b6e9a47e0397a7..85b44e389ab5d1 100644 --- a/.azure-pipelines/windows-release/stage-pack-nuget.yml +++ b/.azure-pipelines/windows-release/stage-pack-nuget.yml @@ -38,7 +38,7 @@ jobs: -OutputDirectory $(Build.ArtifactStagingDirectory) -NoPackageAnalysis -NonInteractive - condition: and(succeeded(), eq(variables['OverrideNugetVersion'], '')) + condition: and(succeeded(), not(variables['OverrideNugetVersion'])) displayName: 'Create nuget package' - powershell: > @@ -48,7 +48,7 @@ jobs: -NoPackageAnalysis -NonInteractive -Version "$(OverrideNugetVersion)" - condition: and(succeeded(), ne(variables['OverrideNugetVersion'], '')) + condition: and(succeeded(), variables['OverrideNugetVersion']) displayName: 'Create nuget package' - powershell: |