From d56a237e160b8e38fc9bd29c6be272b9d92eb67a Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 16 Mar 2022 15:23:35 +0000 Subject: [PATCH] Fix some Windows release build script issues (GH-31931) * Fix the condition used when excluding ARM64 packages from publish * Do not publish anything unless the traditional installer works * Fix disabling of MSI build * Add override conditions for publish steps * Allow overriding the Nuget version number during build --- .azure-pipelines/windows-release.yml | 113 ++++++++++-------- .../windows-release/stage-pack-nuget.yml | 19 ++- .../stage-publish-nugetorg.yml | 4 +- .../stage-publish-pythonorg.yml | 4 +- .../windows-release/stage-publish-store.yml | 2 +- 5 files changed, 84 insertions(+), 58 deletions(-) diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml index ae2d1b9da13..096ecadc79e 100644 --- a/.azure-pipelines/windows-release.yml +++ b/.azure-pipelines/windows-release.yml @@ -136,69 +136,80 @@ 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 - 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 - - 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 + 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'] - jobs: - - template: windows-release/stage-publish-pythonorg.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 - - stage: PublishNuget - displayName: Publish to nuget.org - dependsOn: Test - jobs: - - template: windows-release/stage-publish-nugetorg.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 - - stage: PublishStore - displayName: Publish to Store - dependsOn: Pack_MSIX - jobs: - - template: windows-release/stage-publish-store.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 }} diff --git a/.azure-pipelines/windows-release/stage-pack-nuget.yml b/.azure-pipelines/windows-release/stage-pack-nuget.yml index 8dfea382c35..85b44e389ab 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(), not(variables['OverrideNugetVersion'])) + displayName: 'Create nuget package' + + - powershell: > + nuget pack + "$(Build.BinariesDirectory)\layout\python.nuspec" + -OutputDirectory $(Build.ArtifactStagingDirectory) + -NoPackageAnalysis + -NonInteractive + -Version "$(OverrideNugetVersion)" + condition: and(succeeded(), variables['OverrideNugetVersion']) displayName: 'Create nuget package' - powershell: | diff --git a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml b/.azure-pipelines/windows-release/stage-publish-nugetorg.yml index a8855f0ace8..abb9d0f0fd4 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 @@ -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 be4ef9e0cca..953f728ade3 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 @@ -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 diff --git a/.azure-pipelines/windows-release/stage-publish-store.yml b/.azure-pipelines/windows-release/stage-publish-store.yml index f3d4c80be91..0eae21edaa7 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