summaryrefslogtreecommitdiffstats
path: root/.azure-pipelines
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2022-05-18 13:26:36 (GMT)
committerGitHub <noreply@github.com>2022-05-18 13:26:36 (GMT)
commit3fa023721b495e02e1e6c89fdc737afc7d186cb5 (patch)
treedf1dbc24f7f4f290b5b38c53b183e311e2d04a57 /.azure-pipelines
parent9a1adf2790c156318158606ad83df9ce494f326a (diff)
downloadcpython-3fa023721b495e02e1e6c89fdc737afc7d186cb5.zip
cpython-3fa023721b495e02e1e6c89fdc737afc7d186cb5.tar.gz
cpython-3fa023721b495e02e1e6c89fdc737afc7d186cb5.tar.bz2
Remove Windows release build script (GH-92908)
The scripts have been migrated to the release-tools repository
Diffstat (limited to '.azure-pipelines')
-rw-r--r--.azure-pipelines/windows-release.yml220
-rw-r--r--.azure-pipelines/windows-release/build-steps.yml84
-rw-r--r--.azure-pipelines/windows-release/checkout.yml21
-rw-r--r--.azure-pipelines/windows-release/find-sdk.yml17
-rw-r--r--.azure-pipelines/windows-release/layout-command.yml23
-rw-r--r--.azure-pipelines/windows-release/mingw-lib.yml13
-rw-r--r--.azure-pipelines/windows-release/msi-steps.yml181
-rw-r--r--.azure-pipelines/windows-release/stage-build.yml193
-rw-r--r--.azure-pipelines/windows-release/stage-layout-embed.yml61
-rw-r--r--.azure-pipelines/windows-release/stage-layout-full.yml80
-rw-r--r--.azure-pipelines/windows-release/stage-layout-msix.yml102
-rw-r--r--.azure-pipelines/windows-release/stage-layout-nuget.yml52
-rw-r--r--.azure-pipelines/windows-release/stage-msi.yml43
-rw-r--r--.azure-pipelines/windows-release/stage-pack-msix.yml148
-rw-r--r--.azure-pipelines/windows-release/stage-pack-nuget.yml66
-rw-r--r--.azure-pipelines/windows-release/stage-publish-nugetorg.yml50
-rw-r--r--.azure-pipelines/windows-release/stage-publish-pythonorg.yml192
-rw-r--r--.azure-pipelines/windows-release/stage-publish-store.yml38
-rw-r--r--.azure-pipelines/windows-release/stage-sign.yml130
-rw-r--r--.azure-pipelines/windows-release/stage-test-embed.yml41
-rw-r--r--.azure-pipelines/windows-release/stage-test-msi.yml108
-rw-r--r--.azure-pipelines/windows-release/stage-test-nuget.yml58
22 files changed, 0 insertions, 1921 deletions
diff --git a/.azure-pipelines/windows-release.yml b/.azure-pipelines/windows-release.yml
deleted file mode 100644
index 581f48b..0000000
--- a/.azure-pipelines/windows-release.yml
+++ /dev/null
@@ -1,220 +0,0 @@
-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: DoARM64
- displayName: "Publish ARM64 build"
- type: boolean
- default: true
-# Because there is no ARM64 Tcl/Tk pre-3.11, we need a separate option
-# to keep those builds working when the files are going to be absent.
-# Eventually when we stop releasing anything that old, we can drop this
-# argument (and make it implicitly always 'true')
-- name: ARM64TclTk
- displayName: "Use Tcl/Tk for ARM64 (3.11 and later)"
- type: boolean
- default: true
-- name: DoPGO
- displayName: "Run PGO"
- type: boolean
- default: true
-- name: DoCHM
- displayName: "Produce compiled help document (pre-3.11)"
- type: boolean
- default: false
-- 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 }}
- DoCHM: ${{ parameters.DoCHM }}
- DoLayout: ${{ parameters.DoLayout }}
- DoMSIX: ${{ parameters.DoMSIX }}
- DoNuget: ${{ parameters.DoNuget }}
- DoEmbed: ${{ parameters.DoEmbed }}
- DoMSI: ${{ parameters.DoMSI }}
- DoPublish: ${{ parameters.DoPublish }}
- PublishARM64: ${{ parameters.DoARM64 }}
-# QUEUE TIME VARIABLES
-# PyDotOrgUsername: ''
-# PyDotOrgServer: ''
-
-trigger: none
-pr: none
-
-stages:
-- ${{ if eq(parameters.BuildToPublish, '0') }}:
- - stage: Build
- displayName: Build binaries
- jobs:
- - template: windows-release/stage-build.yml
- parameters:
- ARM64TclTk: ${{ parameters.ARM64TclTk }}
-
- - 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
- parameters:
- ARM64TclTk: ${{ parameters.ARM64TclTk }}
- - 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
-
- - ${{ 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
-
- - ${{ 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
-
- - ${{ if eq(parameters.DoPublish, 'true') }}:
- - ${{ 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: []
- jobs:
- - ${{ if eq(parameters.DoMSI, 'true') }}:
- - template: windows-release/stage-publish-pythonorg.yml
- parameters:
- BuildToPublish: ${{ parameters.BuildToPublish }}
-
- - ${{ if eq(parameters.DoNuget, 'true') }}:
- - template: windows-release/stage-publish-nugetorg.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/build-steps.yml b/.azure-pipelines/windows-release/build-steps.yml
deleted file mode 100644
index 5ca2016..0000000
--- a/.azure-pipelines/windows-release/build-steps.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-parameters:
- ShouldPGO: false
-
-steps:
-- template: ./checkout.yml
-
-- powershell: |
- $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }};
- Write-Host "##vso[task.setvariable variable=VersionText]$($d.PythonVersion)"
- Write-Host "##vso[task.setvariable variable=VersionNumber]$($d.PythonVersionNumber)"
- Write-Host "##vso[task.setvariable variable=VersionHex]$($d.PythonVersionHex)"
- Write-Host "##vso[task.setvariable variable=VersionUnique]$($d.PythonVersionUnique)"
- Write-Host "##vso[build.addbuildtag]$($d.PythonVersion)"
- Write-Host "##vso[build.addbuildtag]$($d.PythonVersion)-$(Name)"
- displayName: 'Extract version numbers'
-
-- ${{ if eq(parameters.ShouldPGO, 'false') }}:
- - powershell: |
- $env:SigningCertificate = $null
- .\PCbuild\build.bat -v -p $(Platform) -c $(Configuration)
- displayName: 'Run build'
- env:
- IncludeUwp: true
- Py_OutDir: '$(Build.BinariesDirectory)\bin'
-
-- ${{ if eq(parameters.ShouldPGO, 'true') }}:
- - powershell: |
- $env:SigningCertificate = $null
- .\PCbuild\build.bat -v -p $(Platform) --pgo
- displayName: 'Run build with PGO'
- env:
- IncludeUwp: true
- Py_OutDir: '$(Build.BinariesDirectory)\bin'
-
-- powershell: |
- $kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10
- $tool = (gci -r "$kitroot\Bin\*\x64\signtool.exe" | sort FullName -Desc | select -First 1)
- if (-not $tool) {
- throw "SDK is not available"
- }
- Write-Host "##vso[task.prependpath]$($tool.Directory)"
- displayName: 'Add WinSDK tools to path'
-
-- powershell: |
- $env:SigningCertificate = $null
- $(_HostPython) PC\layout -vv -b "$(Build.BinariesDirectory)\bin" -t "$(Build.BinariesDirectory)\catalog" --catalog "${env:CAT}.cdf" --preset-default --arch $(Arch)
- makecat "${env:CAT}.cdf"
- del "${env:CAT}.cdf"
- if (-not (Test-Path "${env:CAT}.cat")) {
- throw "Failed to build catalog file"
- }
- displayName: 'Generate catalog'
- env:
- CAT: $(Build.BinariesDirectory)\bin\$(Arch)\python
- PYTHON_HEXVERSION: $(VersionHex)
-
-- task: PublishPipelineArtifact@0
- displayName: 'Publish binaries'
- condition: and(succeeded(), not(and(eq(variables['Configuration'], 'Release'), variables['SigningCertificate'])))
- inputs:
- targetPath: '$(Build.BinariesDirectory)\bin\$(Arch)'
- artifactName: bin_$(Name)
-
-- task: PublishPipelineArtifact@0
- displayName: 'Publish binaries for signing'
- condition: and(succeeded(), and(eq(variables['Configuration'], 'Release'), variables['SigningCertificate']))
- inputs:
- targetPath: '$(Build.BinariesDirectory)\bin\$(Arch)'
- artifactName: unsigned_bin_$(Name)
-
-- task: CopyFiles@2
- displayName: 'Layout Artifact: symbols'
- inputs:
- sourceFolder: $(Build.BinariesDirectory)\bin\$(Arch)
- targetFolder: $(Build.ArtifactStagingDirectory)\symbols\$(Name)
- flatten: true
- contents: |
- **\*.pdb
-
-- task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: symbols'
- inputs:
- PathToPublish: '$(Build.ArtifactStagingDirectory)\symbols'
- ArtifactName: symbols
diff --git a/.azure-pipelines/windows-release/checkout.yml b/.azure-pipelines/windows-release/checkout.yml
deleted file mode 100644
index d42d55f..0000000
--- a/.azure-pipelines/windows-release/checkout.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-parameters:
- depth: 3
-
-steps:
-- checkout: none
-
-- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(SourceTag) --single-branch https://github.com/$(GitRemote)/cpython.git .
- displayName: 'git clone ($(GitRemote)/$(SourceTag))'
- condition: and(succeeded(), and(variables['GitRemote'], variables['SourceTag']))
-
-- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(SourceTag) --single-branch $(Build.Repository.Uri) .
- displayName: 'git clone (<default>/$(SourceTag))'
- condition: and(succeeded(), and(not(variables['GitRemote']), variables['SourceTag']))
-
-- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(Build.SourceBranchName) --single-branch https://github.com/$(GitRemote)/cpython.git .
- displayName: 'git clone ($(GitRemote)/<default>)'
- condition: and(succeeded(), and(variables['GitRemote'], not(variables['SourceTag'])))
-
-- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(Build.SourceBranchName) --single-branch $(Build.Repository.Uri) .
- displayName: 'git clone'
- condition: and(succeeded(), and(not(variables['GitRemote']), not(variables['SourceTag'])))
diff --git a/.azure-pipelines/windows-release/find-sdk.yml b/.azure-pipelines/windows-release/find-sdk.yml
deleted file mode 100644
index e4de785..0000000
--- a/.azure-pipelines/windows-release/find-sdk.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Locate the Windows SDK and add its binaries directory to PATH
-#
-# `toolname` can be overridden to use a different marker file.
-
-parameters:
- toolname: signtool.exe
-
-steps:
- - powershell: |
- $kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10
- $tool = (gci -r "$kitroot\Bin\*\${{ parameters.toolname }}" | sort FullName -Desc | select -First 1)
- if (-not $tool) {
- throw "SDK is not available"
- }
- Write-Host "##vso[task.prependpath]$($tool.Directory)"
- Write-Host "Adding $($tool.Directory) to PATH"
- displayName: 'Add WinSDK tools to path'
diff --git a/.azure-pipelines/windows-release/layout-command.yml b/.azure-pipelines/windows-release/layout-command.yml
deleted file mode 100644
index 406ccd8..0000000
--- a/.azure-pipelines/windows-release/layout-command.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-steps:
-- task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(HostArch)'
- condition: and(succeeded(), variables['HostArch'])
- inputs:
- artifactName: bin_$(HostArch)
- targetPath: $(Build.BinariesDirectory)\bin_$(HostArch)
-
-- powershell: >
- Write-Host (
- '##vso[task.setvariable variable=LayoutCmd]&
- "$(Python)"
- "{1}\PC\layout"
- -vv
- --source "{1}"
- --build "{0}\bin"
- --arch "$(Name)"
- --temp "{0}\layout-temp"
- --include-cat "{0}\bin\python.cat"
- --doc-build "{0}\doc"'
- -f ("$(Build.BinariesDirectory)", "$(Build.SourcesDirectory)")
- )
- displayName: 'Set LayoutCmd'
diff --git a/.azure-pipelines/windows-release/mingw-lib.yml b/.azure-pipelines/windows-release/mingw-lib.yml
deleted file mode 100644
index 30f7d34..0000000
--- a/.azure-pipelines/windows-release/mingw-lib.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-parameters:
- DllToolOpt: -m i386:x86-64
- #DllToolOpt: -m i386 --as-flags=--32
-
-steps:
-- powershell: |
- git clone https://github.com/python/cpython-bin-deps --branch binutils --single-branch --depth 1 --progress -v "binutils"
- gci "bin\$(Arch)\python*.dll" | %{
- & "binutils\gendef.exe" $_ | Out-File -Encoding ascii tmp.def
- & "binutils\dlltool.exe" --dllname $($_.BaseName).dll --def tmp.def --output-lib "$($_.Directory)\lib$($_.BaseName).a" ${{ parameters.DllToolOpt }}
- }
- displayName: 'Generate MinGW import library'
- workingDirectory: $(Build.BinariesDirectory)
diff --git a/.azure-pipelines/windows-release/msi-steps.yml b/.azure-pipelines/windows-release/msi-steps.yml
deleted file mode 100644
index 79fc6f5..0000000
--- a/.azure-pipelines/windows-release/msi-steps.yml
+++ /dev/null
@@ -1,181 +0,0 @@
-parameters:
- ARM64TclTk: true
-
-steps:
- - template: ./checkout.yml
-
- - powershell: |
- $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }};
- Write-Host "##vso[task.setvariable variable=SigningDescription]Python $($d.PythonVersion)"
- displayName: 'Update signing description'
- condition: and(succeeded(), not(variables['SigningDescription']))
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: doc'
- inputs:
- artifactName: doc
- targetPath: $(Build.BinariesDirectory)\doc
-
- - task: CopyFiles@2
- displayName: 'Merge documentation files'
- inputs:
- sourceFolder: $(Build.BinariesDirectory)\doc
- targetFolder: $(Build.SourcesDirectory)\Doc\build
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_win32'
- inputs:
- artifactName: bin_win32
- targetPath: $(Build.BinariesDirectory)\win32
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_win32_d'
- inputs:
- artifactName: bin_win32_d
- targetPath: $(Build.BinariesDirectory)\win32
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_amd64'
- inputs:
- artifactName: bin_amd64
- targetPath: $(Build.BinariesDirectory)\amd64
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_amd64_d'
- inputs:
- artifactName: bin_amd64_d
- targetPath: $(Build.BinariesDirectory)\amd64
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_arm64'
- condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- inputs:
- artifactName: bin_arm64
- targetPath: $(Build.BinariesDirectory)\arm64
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_arm64_d'
- condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- inputs:
- artifactName: bin_arm64_d
- targetPath: $(Build.BinariesDirectory)\arm64
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: tcltk_lib_win32'
- inputs:
- artifactName: tcltk_lib_win32
- targetPath: $(Build.BinariesDirectory)\tcltk_lib_win32
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: tcltk_lib_amd64'
- inputs:
- artifactName: tcltk_lib_amd64
- targetPath: $(Build.BinariesDirectory)\tcltk_lib_amd64
-
- - ${{ if eq(parameters.ARM64TclTk, true) }}:
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: tcltk_lib_arm64'
- condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- inputs:
- artifactName: tcltk_lib_arm64
- targetPath: $(Build.BinariesDirectory)\tcltk_lib_arm64
-
- - powershell: |
- copy $(Build.BinariesDirectory)\amd64\Activate.ps1 Lib\venv\scripts\common\Activate.ps1 -Force
- displayName: 'Copy signed files into sources'
- condition: and(succeeded(), variables['SigningCertificate'])
-
- - script: |
- call Tools\msi\get_externals.bat
- call PCbuild\find_python.bat
- echo ##vso[task.setvariable variable=PYTHON]%PYTHON%
- call PCbuild/find_msbuild.bat
- echo ##vso[task.setvariable variable=MSBUILD]%MSBUILD%
- displayName: 'Get external dependencies'
-
- - script: |
- %PYTHON% -m pip install blurb
- %PYTHON% -m blurb merge -f Misc\NEWS
- displayName: 'Merge NEWS file'
-
- - script: |
- %MSBUILD% Tools\msi\launcher\launcher.wixproj
- displayName: 'Build launcher installer'
- env:
- Platform: x86
- Py_OutDir: $(Build.BinariesDirectory)
-
- - script: |
- %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
- displayName: 'Build win32 installer'
- env:
- Platform: x86
- Py_OutDir: $(Build.BinariesDirectory)
- PYTHON: $(Build.BinariesDirectory)\win32\python.exe
- PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_win32
- BuildForRelease: true
-
- - script: |
- %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
- displayName: 'Build amd64 installer'
- env:
- Platform: x64
- Py_OutDir: $(Build.BinariesDirectory)
- PYTHON: $(Build.BinariesDirectory)\amd64\python.exe
- PythonForBuild: $(Build.BinariesDirectory)\amd64\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_amd64
- BuildForRelease: true
-
- - script: |
- %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
- displayName: 'Build arm64 installer'
- condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- env:
- Platform: ARM64
- Py_OutDir: $(Build.BinariesDirectory)
- PYTHON: $(Build.BinariesDirectory)\win32\python.exe
- PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- BuildForRelease: true
- ${{ if eq(parameters.ARM64TclTk, true) }}:
- TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_arm64
-
- - task: CopyFiles@2
- displayName: 'Assemble artifact: msi (win32)'
- inputs:
- sourceFolder: $(Build.BinariesDirectory)\win32\en-us
- targetFolder: $(Build.ArtifactStagingDirectory)\msi\win32
- contents: |
- *.msi
- *.cab
- *.exe
-
- - task: CopyFiles@2
- displayName: 'Assemble artifact: msi (amd64)'
- inputs:
- sourceFolder: $(Build.BinariesDirectory)\amd64\en-us
- targetFolder: $(Build.ArtifactStagingDirectory)\msi\amd64
- contents: |
- *.msi
- *.cab
- *.exe
-
- - task: CopyFiles@2
- displayName: 'Assemble artifact: msi (arm64)'
- condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- inputs:
- sourceFolder: $(Build.BinariesDirectory)\arm64\en-us
- targetFolder: $(Build.ArtifactStagingDirectory)\msi\arm64
- contents: |
- *.msi
- *.cab
- *.exe
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish MSI'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\msi'
- artifactName: msi
diff --git a/.azure-pipelines/windows-release/stage-build.yml b/.azure-pipelines/windows-release/stage-build.yml
deleted file mode 100644
index 26f4317..0000000
--- a/.azure-pipelines/windows-release/stage-build.yml
+++ /dev/null
@@ -1,193 +0,0 @@
-parameters:
- ARM64TclTk: true
-
-jobs:
-- job: Build_Docs
- displayName: Docs build
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- steps:
- - template: ./checkout.yml
-
- - script: Doc\make.bat html
- displayName: 'Build HTML docs'
- env:
- BUILDDIR: $(Build.BinariesDirectory)\Doc
-
- - script: Doc\make.bat htmlhelp
- displayName: 'Build CHM docs'
- condition: and(succeeded(), eq(variables['DoCHM'], 'true'))
- env:
- BUILDDIR: $(Build.BinariesDirectory)\Doc
-
- - task: CopyFiles@2
- displayName: 'Assemble artifact: Doc'
- inputs:
- sourceFolder: $(Build.BinariesDirectory)\Doc
- targetFolder: $(Build.ArtifactStagingDirectory)\Doc
- contents: |
- html\**\*
- htmlhelp\*.chm
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish artifact: doc'
- inputs:
- targetPath: $(Build.ArtifactStagingDirectory)\Doc
- artifactName: doc
-
-
-- job: Build_Python
- displayName: Python build
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Name: win32
- Arch: win32
- Platform: x86
- Configuration: Release
- _HostPython: .\python
- win32_d:
- Name: win32_d
- Arch: win32
- Platform: x86
- Configuration: Debug
- _HostPython: .\python
- amd64_d:
- Name: amd64_d
- Arch: amd64
- Platform: x64
- Configuration: Debug
- _HostPython: .\python
- arm64:
- Name: arm64
- Arch: arm64
- Platform: ARM64
- Configuration: Release
- _HostPython: python
- arm64_d:
- Name: arm64_d
- Arch: arm64
- Platform: ARM64
- Configuration: Debug
- _HostPython: python
-
- steps:
- - template: ./build-steps.yml
-
-- job: Build_Python_NonPGO
- displayName: Python non-PGO build
- condition: and(succeeded(), ne(variables['DoPGO'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- amd64:
- Name: amd64
- Arch: amd64
- Platform: x64
- Configuration: Release
- _HostPython: .\python
-
- steps:
- - template: ./build-steps.yml
-
-
-- job: Build_Python_PGO
- displayName: Python PGO build
- condition: and(succeeded(), eq(variables['DoPGO'], 'true'))
-
- # Allow up to five hours for PGO
- timeoutInMinutes: 300
-
- pool:
- name: 'Windows Release'
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- amd64:
- Name: amd64
- Arch: amd64
- Platform: x64
- Configuration: Release
- _HostPython: .\python
-
- steps:
- - template: ./build-steps.yml
- parameters:
- ShouldPGO: true
-
-
-- job: TclTk_Lib
- displayName: Publish Tcl/Tk Library
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- steps:
- - template: ./checkout.yml
-
- - script: PCbuild\get_externals.bat --no-openssl --no-libffi
- displayName: 'Get external dependencies'
-
- - task: MSBuild@1
- displayName: 'Copy Tcl/Tk lib for publish'
- inputs:
- solution: PCbuild\tcltk.props
- platform: x86
- msbuildArguments: /t:CopyTclTkLib /p:OutDir="$(Build.ArtifactStagingDirectory)\tcl_win32"
-
- - task: MSBuild@1
- displayName: 'Copy Tcl/Tk lib for publish'
- inputs:
- solution: PCbuild\tcltk.props
- platform: x64
- msbuildArguments: /t:CopyTclTkLib /p:OutDir="$(Build.ArtifactStagingDirectory)\tcl_amd64"
-
- - ${{ if eq(parameters.ARM64TclTk, true) }}:
- - task: MSBuild@1
- displayName: 'Copy Tcl/Tk lib for publish'
- inputs:
- solution: PCbuild\tcltk.props
- platform: ARM64
- msbuildArguments: /t:CopyTclTkLib /p:OutDir="$(Build.ArtifactStagingDirectory)\tcl_arm64"
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish artifact: tcltk_lib_win32'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\tcl_win32'
- artifactName: tcltk_lib_win32
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish artifact: tcltk_lib_amd64'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\tcl_amd64'
- artifactName: tcltk_lib_amd64
-
- - ${{ if eq(parameters.ARM64TclTk, true) }}:
- - task: PublishPipelineArtifact@0
- displayName: 'Publish artifact: tcltk_lib_arm64'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\tcl_arm64'
- artifactName: tcltk_lib_arm64
diff --git a/.azure-pipelines/windows-release/stage-layout-embed.yml b/.azure-pipelines/windows-release/stage-layout-embed.yml
deleted file mode 100644
index c8b23d3..0000000
--- a/.azure-pipelines/windows-release/stage-layout-embed.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-jobs:
-- job: Make_Embed_Layout
- displayName: Make embeddable layout
- condition: and(succeeded(), eq(variables['DoEmbed'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Name: win32
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- amd64:
- Name: amd64
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- arm64:
- Name: arm64
- HostArch: amd64
- Python: $(Build.BinariesDirectory)\bin_amd64\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
-
- steps:
- - template: ./checkout.yml
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(Name)'
- inputs:
- artifactName: bin_$(Name)
- targetPath: $(Build.BinariesDirectory)\bin
-
- - template: ./layout-command.yml
-
- - powershell: |
- $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }};
- Write-Host "##vso[task.setvariable variable=VersionText]$($d.PythonVersion)"
- displayName: 'Extract version numbers'
-
- - powershell: >
- $(LayoutCmd)
- --copy "$(Build.ArtifactStagingDirectory)\layout"
- --zip "$(Build.ArtifactStagingDirectory)\embed\python-$(VersionText)-embed-$(Name).zip"
- --preset-embed
- displayName: 'Generate embeddable layout'
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish Artifact: layout_embed_$(Name)'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\layout'
- artifactName: layout_embed_$(Name)
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: embed'
- inputs:
- PathtoPublish: '$(Build.ArtifactStagingDirectory)\embed'
- ArtifactName: embed
diff --git a/.azure-pipelines/windows-release/stage-layout-full.yml b/.azure-pipelines/windows-release/stage-layout-full.yml
deleted file mode 100644
index 343ee1f..0000000
--- a/.azure-pipelines/windows-release/stage-layout-full.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-parameters:
- ARM64TclTk: true
-
-jobs:
-- job: Make_Layouts
- displayName: Make layouts
- condition: and(succeeded(), eq(variables['DoLayout'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Name: win32
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
- amd64:
- Name: amd64
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
- arm64:
- Name: arm64
- HostArch: amd64
- Python: $(Build.BinariesDirectory)\bin_amd64\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- ${{ if eq(parameters.ARM64TclTk, true) }}:
- TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
-
- steps:
- - template: ./checkout.yml
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(Name)'
- inputs:
- artifactName: bin_$(Name)
- targetPath: $(Build.BinariesDirectory)\bin
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(Name)_d'
- inputs:
- artifactName: bin_$(Name)_d
- targetPath: $(Build.BinariesDirectory)\bin
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: doc'
- inputs:
- artifactName: doc
- targetPath: $(Build.BinariesDirectory)\doc
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: tcltk_lib_$(Name)'
- condition: and(succeeded(), variables['TclLibrary'])
- inputs:
- artifactName: tcltk_lib_$(Name)
- targetPath: $(Build.BinariesDirectory)\tcltk_lib
-
- - powershell: |
- copy "$(Build.BinariesDirectory)\bin\Activate.ps1" Lib\venv\scripts\common\Activate.ps1 -Force
- displayName: 'Copy signed files into sources'
- condition: and(succeeded(), variables['SigningCertificate'])
-
- - template: ./layout-command.yml
-
- - powershell: |
- $(LayoutCmd) --copy "$(Build.ArtifactStagingDirectory)\layout" --preset-default
- displayName: 'Generate full layout'
- env:
- TCL_LIBRARY: $(TclLibrary)
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish Artifact: layout_full_$(Name)'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\layout'
- artifactName: layout_full_$(Name)
diff --git a/.azure-pipelines/windows-release/stage-layout-msix.yml b/.azure-pipelines/windows-release/stage-layout-msix.yml
deleted file mode 100644
index a44e1ed..0000000
--- a/.azure-pipelines/windows-release/stage-layout-msix.yml
+++ /dev/null
@@ -1,102 +0,0 @@
-parameters:
- ARM64TclTk: true
-
-jobs:
-- job: Make_MSIX_Layout
- displayName: Make MSIX layout
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- #win32:
- # Name: win32
- # Python: $(Build.BinariesDirectory)\bin\python.exe
- # PYTHONHOME: $(Build.SourcesDirectory)
- # TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
- amd64:
- Name: amd64
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
- arm64:
- Name: arm64
- HostArch: amd64
- Python: $(Build.BinariesDirectory)\bin_amd64\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- ${{ if eq(parameters.ARM64TclTk, true) }}:
- TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
-
- steps:
- - template: ./checkout.yml
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(Name)'
- inputs:
- artifactName: bin_$(Name)
- targetPath: $(Build.BinariesDirectory)\bin
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(Name)_d'
- inputs:
- artifactName: bin_$(Name)_d
- targetPath: $(Build.BinariesDirectory)\bin
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: tcltk_lib_$(Name)'
- condition: and(succeeded(), variables['TclLibrary'])
- inputs:
- artifactName: tcltk_lib_$(Name)
- targetPath: $(Build.BinariesDirectory)\tcltk_lib
-
- - powershell: |
- copy "$(Build.BinariesDirectory)\bin\Activate.ps1" Lib\venv\scripts\common\Activate.ps1 -Force
- displayName: 'Copy signed files into sources'
- condition: and(succeeded(), variables['SigningCertificate'])
-
- - template: ./layout-command.yml
-
- - powershell: |
- Remove-Item "$(Build.ArtifactStagingDirectory)\appx-store" -Recurse -Force -EA 0
- $(LayoutCmd) --copy "$(Build.ArtifactStagingDirectory)\appx-store" --preset-appx --precompile
- displayName: 'Generate store APPX layout'
- env:
- TCL_LIBRARY: $(TclLibrary)
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish Artifact: layout_appxstore_$(Name)'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\appx-store'
- artifactName: layout_appxstore_$(Name)
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: cert'
- condition: and(succeeded(), variables['SigningCertificate'])
- inputs:
- artifactName: cert
- targetPath: $(Build.BinariesDirectory)\cert
-
- - powershell: |
- $info = (gc "$(Build.BinariesDirectory)\cert\certinfo.json" | ConvertFrom-JSON)
- Write-Host "Side-loadable APPX must be signed with '$($info.Subject)'"
- Write-Host "##vso[task.setvariable variable=APPX_DATA_PUBLISHER]$($info.Subject)"
- Write-Host "##vso[task.setvariable variable=APPX_DATA_SHA256]$($info.SHA256)"
- displayName: 'Override signing parameters'
- condition: and(succeeded(), variables['SigningCertificate'])
-
- - powershell: |
- Remove-Item "$(Build.ArtifactStagingDirectory)\appx" -Recurse -Force -EA 0
- $(LayoutCmd) --copy "$(Build.ArtifactStagingDirectory)\appx" --preset-appx --precompile --include-symbols --include-tests
- displayName: 'Generate sideloading APPX layout'
- env:
- TCL_LIBRARY: $(TclLibrary)
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish Artifact: layout_appx_$(Name)'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\appx'
- artifactName: layout_appx_$(Name)
diff --git a/.azure-pipelines/windows-release/stage-layout-nuget.yml b/.azure-pipelines/windows-release/stage-layout-nuget.yml
deleted file mode 100644
index b60a324..0000000
--- a/.azure-pipelines/windows-release/stage-layout-nuget.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-jobs:
-- job: Make_Nuget_Layout
- displayName: Make Nuget layout
- condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Name: win32
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- amd64:
- Name: amd64
- Python: $(Build.BinariesDirectory)\bin\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
- arm64:
- Name: arm64
- HostArch: amd64
- Python: $(Build.BinariesDirectory)\bin_amd64\python.exe
- PYTHONHOME: $(Build.SourcesDirectory)
-
- steps:
- - template: ./checkout.yml
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: bin_$(Name)'
- inputs:
- artifactName: bin_$(Name)
- targetPath: $(Build.BinariesDirectory)\bin
-
- - powershell: |
- copy $(Build.BinariesDirectory)\bin\Activate.ps1 Lib\venv\scripts\common\Activate.ps1 -Force
- displayName: 'Copy signed files into sources'
- condition: and(succeeded(), variables['SigningCertificate'])
-
- - template: ./layout-command.yml
-
- - powershell: |
- $(LayoutCmd) --copy "$(Build.ArtifactStagingDirectory)\nuget" --preset-nuget
- displayName: 'Generate nuget layout'
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish Artifact: layout_nuget_$(Name)'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\nuget'
- artifactName: layout_nuget_$(Name)
diff --git a/.azure-pipelines/windows-release/stage-msi.yml b/.azure-pipelines/windows-release/stage-msi.yml
deleted file mode 100644
index 0566544..0000000
--- a/.azure-pipelines/windows-release/stage-msi.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-parameters:
- ARM64TclTk: true
-
-jobs:
-- job: Make_MSI
- displayName: Make MSI
- condition: and(succeeded(), not(variables['SigningCertificate']))
-
- pool:
- vmImage: windows-2022
-
- variables:
- ReleaseUri: http://www.python.org/{arch}
- DownloadUrl: https://www.python.org/ftp/python/{version}/{arch}{releasename}/{msi}
- Py_OutDir: $(Build.BinariesDirectory)
-
- workspace:
- clean: all
-
- steps:
- - template: msi-steps.yml
- parameters:
- ARM64TclTk: ${{ parameters.ARM64TclTk }}
-
-- job: Make_Signed_MSI
- displayName: Make signed MSI
- condition: and(succeeded(), variables['SigningCertificate'])
-
- pool:
- name: 'Windows Release'
-
- variables:
- ReleaseUri: http://www.python.org/{arch}
- DownloadUrl: https://www.python.org/ftp/python/{version}/{arch}{releasename}/{msi}
- Py_OutDir: $(Build.BinariesDirectory)
-
- workspace:
- clean: all
-
- steps:
- - template: msi-steps.yml
- parameters:
- ARM64TclTk: ${{ parameters.ARM64TclTk }}
diff --git a/.azure-pipelines/windows-release/stage-pack-msix.yml b/.azure-pipelines/windows-release/stage-pack-msix.yml
deleted file mode 100644
index 9598815..0000000
--- a/.azure-pipelines/windows-release/stage-pack-msix.yml
+++ /dev/null
@@ -1,148 +0,0 @@
-jobs:
-- job: Pack_MSIX
- displayName: Pack MSIX bundles
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- amd64:
- Name: amd64
- Artifact: appx
- Suffix:
- ShouldSign: true
- amd64_store:
- Name: amd64
- Artifact: appxstore
- Suffix: -store
- Upload: true
- arm64:
- Name: arm64
- Artifact: appx
- Suffix:
- ShouldSign: true
- arm64_store:
- Name: arm64
- Artifact: appxstore
- Suffix: -store
- Upload: true
-
- steps:
- - template: ./checkout.yml
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: layout_$(Artifact)_$(Name)'
- inputs:
- artifactName: layout_$(Artifact)_$(Name)
- targetPath: $(Build.BinariesDirectory)\layout
-
- - task: DownloadBuildArtifacts@0
- displayName: 'Download artifact: symbols'
- inputs:
- artifactName: symbols
- downloadPath: $(Build.BinariesDirectory)
-
- - powershell: |
- $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }};
- Write-Host "##vso[task.setvariable variable=VersionText]$($d.PythonVersion)"
- Write-Host "##vso[task.setvariable variable=VersionNumber]$($d.PythonVersionNumber)"
- Write-Host "##vso[task.setvariable variable=VersionHex]$($d.PythonVersionHex)"
- Write-Host "##vso[task.setvariable variable=VersionUnique]$($d.PythonVersionUnique)"
- Write-Host "##vso[task.setvariable variable=Filename]python-$($d.PythonVersion)-$(Name)$(Suffix)"
- displayName: 'Extract version numbers'
-
- - powershell: |
- ./Tools/msi/make_appx.ps1 -layout "$(Build.BinariesDirectory)\layout" -msix "$(Build.ArtifactStagingDirectory)\msix\$(Filename).msix"
- displayName: 'Build msix'
-
- - powershell: |
- 7z a -tzip "$(Build.ArtifactStagingDirectory)\msix\$(Filename).appxsym" *.pdb
- displayName: 'Build appxsym'
- workingDirectory: $(Build.BinariesDirectory)\symbols\$(Name)
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: MSIX'
- condition: and(succeeded(), or(ne(variables['ShouldSign'], 'true'), not(variables['SigningCertificate'])))
- inputs:
- PathtoPublish: '$(Build.ArtifactStagingDirectory)\msix'
- ArtifactName: msix
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: MSIX'
- condition: and(succeeded(), and(eq(variables['ShouldSign'], 'true'), variables['SigningCertificate']))
- inputs:
- PathtoPublish: '$(Build.ArtifactStagingDirectory)\msix'
- ArtifactName: unsigned_msix
-
- - powershell: |
- 7z a -tzip "$(Build.ArtifactStagingDirectory)\msixupload\$(Filename).msixupload" *
- displayName: 'Build msixupload'
- condition: and(succeeded(), eq(variables['Upload'], 'true'))
- workingDirectory: $(Build.ArtifactStagingDirectory)\msix
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: MSIXUpload'
- condition: and(succeeded(), eq(variables['Upload'], 'true'))
- inputs:
- PathtoPublish: '$(Build.ArtifactStagingDirectory)\msixupload'
- ArtifactName: msixupload
-
-
-- job: Sign_MSIX
- displayName: Sign side-loadable MSIX bundles
- dependsOn:
- - Pack_MSIX
- condition: and(succeeded(), variables['SigningCertificate'])
-
- pool:
- name: 'Windows Release'
-
- workspace:
- clean: all
-
- steps:
- - template: ./checkout.yml
- - template: ./find-sdk.yml
-
- - powershell: |
- $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }};
- Write-Host "##vso[task.setvariable variable=SigningDescription]Python $($d.PythonVersion)"
- displayName: 'Update signing description'
- condition: and(succeeded(), not(variables['SigningDescription']))
-
- - task: DownloadBuildArtifacts@0
- displayName: 'Download Artifact: unsigned_msix'
- inputs:
- artifactName: unsigned_msix
- downloadPath: $(Build.BinariesDirectory)
-
- # MSIX must be signed and timestamped simultaneously
- #
- # Getting "Error: SignerSign() failed." (-2147024885/0x8007000b)"?
- # It may be that the certificate info collected in stage-sign.yml is wrong. Check that
- # you do not have multiple matches for the certificate name you have specified.
- - powershell: |
- $failed = $true
- foreach ($retry in 1..3) {
- signtool sign /a /n "$(SigningCertificate)" /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d "$(SigningDescription)" (gi *.msix)
- if ($?) {
- $failed = $false
- break
- }
- sleep 1
- }
- if ($failed) {
- throw "Failed to sign MSIX"
- }
- displayName: 'Sign MSIX'
- workingDirectory: $(Build.BinariesDirectory)\unsigned_msix
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: MSIX'
- inputs:
- PathtoPublish: '$(Build.BinariesDirectory)\unsigned_msix'
- ArtifactName: msix
diff --git a/.azure-pipelines/windows-release/stage-pack-nuget.yml b/.azure-pipelines/windows-release/stage-pack-nuget.yml
deleted file mode 100644
index 85b44e3..0000000
--- a/.azure-pipelines/windows-release/stage-pack-nuget.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-jobs:
-- job: Pack_Nuget
- displayName: Pack Nuget bundles
- condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
-
- pool:
- name: 'Windows Release'
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- amd64:
- Name: amd64
- win32:
- Name: win32
- arm64:
- Name: arm64
-
- steps:
- - checkout: none
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: layout_nuget_$(Name)'
- inputs:
- artifactName: layout_nuget_$(Name)
- targetPath: $(Build.BinariesDirectory)\layout
-
- - task: NugetToolInstaller@0
- displayName: 'Install Nuget'
- inputs:
- versionSpec: '>=5.0'
-
- - 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: |
- gci *.nupkg | %{
- nuget sign "$_" -CertificateSubjectName "$(SigningCertificate)" -Timestamper http://timestamp.digicert.com/ -Overwrite
- }
- displayName: 'Sign nuget package'
- workingDirectory: $(Build.ArtifactStagingDirectory)
- condition: and(succeeded(), variables['SigningCertificate'])
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: nuget'
- inputs:
- PathtoPublish: '$(Build.ArtifactStagingDirectory)'
- ArtifactName: nuget
diff --git a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml b/.azure-pipelines/windows-release/stage-publish-nugetorg.yml
deleted file mode 100644
index abb9d0f..0000000
--- a/.azure-pipelines/windows-release/stage-publish-nugetorg.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-parameters:
- BuildToPublish: ''
-
-jobs:
-- job: Publish_Nuget
- displayName: Publish Nuget packages
- condition: and(succeeded(), eq(variables['DoNuget'], 'true'), ne(variables['SkipNugetPublish'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- steps:
- - checkout: none
-
- - ${{ 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)
-
-
- - powershell: 'gci pythonarm*.nupkg | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del'
- displayName: 'Prevent publishing ARM64 packages'
- workingDirectory: '$(Build.BinariesDirectory)\nuget'
- condition: and(succeeded(), ne(variables['PublishARM64'], 'true'))
-
- - task: NuGetCommand@2
- displayName: Push packages
- condition: and(succeeded(), eq(variables['SigningCertificate'], variables['__RealSigningCertificate']))
- inputs:
- command: push
- packagesToPush: '$(Build.BinariesDirectory)\nuget\*.nupkg'
- nuGetFeedType: external
- publishFeedCredentials: 'Python on Nuget'
diff --git a/.azure-pipelines/windows-release/stage-publish-pythonorg.yml b/.azure-pipelines/windows-release/stage-publish-pythonorg.yml
deleted file mode 100644
index 084134e..0000000
--- a/.azure-pipelines/windows-release/stage-publish-pythonorg.yml
+++ /dev/null
@@ -1,192 +0,0 @@
-parameters:
- BuildToPublish: ''
-
-jobs:
-- job: Publish_Python
- displayName: Publish python.org packages
- condition: and(succeeded(), eq(variables['DoMSI'], 'true'), eq(variables['DoEmbed'], 'true'), ne(variables['SkipPythonOrgPublish'], 'true'))
-
- pool:
- #vmImage: windows-2022
- name: 'Windows Release'
-
- workspace:
- clean: all
-
- steps:
- - template: ./checkout.yml
-
- - task: UsePythonVersion@0
- displayName: 'Use Python 3.6 or later'
- inputs:
- versionSpec: '>=3.6'
-
- - ${{ 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)
-
-
- # Note that ARM64 MSIs are skipped at build when this option is specified
- - powershell: 'gci *embed-arm*.zip | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del'
- displayName: 'Prevent publishing ARM64 packages'
- workingDirectory: '$(Build.BinariesDirectory)\embed'
- condition: and(succeeded(), ne(variables['PublishARM64'], 'true'))
-
-
- - task: DownloadSecureFile@1
- name: gpgkey
- inputs:
- secureFile: 'python-signing.key'
- displayName: 'Download GPG key'
-
- - powershell: |
- git clone https://github.com/python/cpython-bin-deps --branch gpg --single-branch --depth 1 --progress -v "gpg"
- gpg/gpg2.exe --import "$(gpgkey.secureFilePath)"
- $files = gci -File "msi\*\*", "embed\*.zip"
- if ("$(DoCHM)" -ieq "true") {
- $files = $files + (gci -File "doc\htmlhelp\*.chm")
- }
- $files.FullName | %{
- gpg/gpg2.exe -ba --batch --passphrase $(GPGPassphrase) $_
- "Made signature for $_"
- }
- displayName: 'Generate GPG signatures'
- workingDirectory: $(Build.BinariesDirectory)
-
- - powershell: |
- $p = gps "gpg-agent" -EA 0
- if ($p) { $p.Kill() }
- displayName: 'Kill GPG agent'
- condition: true
-
-
- - powershell: >
- $(Build.SourcesDirectory)\Tools\msi\uploadrelease.ps1
- -build msi
- -user $(PyDotOrgUsername)
- -server $(PyDotOrgServer)
- -doc_htmlhelp doc\htmlhelp
- -embed embed
- -skippurge
- -skiptest
- -skiphash
- condition: and(succeeded(), eq(variables['SigningCertificate'], variables['__RealSigningCertificate']))
- workingDirectory: $(Build.BinariesDirectory)
- displayName: 'Upload files to python.org'
-
- - powershell: >
- python
- "$(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: |
- $failures = 0
- gci "msi\*\*.exe" -File | %{
- $d = mkdir "tests\$($_.BaseName)" -Force
- gci $d -r -File | del
- $ic = copy $_ $d -PassThru
- "Checking layout for $($ic.Name)"
- Start-Process -wait $ic "/passive", "/layout", "$d\layout", "/log", "$d\log\install.log"
- if (-not $?) {
- Write-Error "Failed to validate layout of $($inst.Name)"
- $failures += 1
- }
- }
- if ($failures) {
- Write-Error "Failed to validate $failures installers"
- exit 1
- }
- condition: and(succeeded(), eq(variables['SigningCertificate'], variables['__RealSigningCertificate']))
- workingDirectory: $(Build.BinariesDirectory)
- displayName: 'Test layouts'
-
- - powershell: |
- $files = gci -File "msi\*\*.exe", "embed\*.zip"
- if ("$(DoCHM)" -ieq "true") {
- $files = $files + (gci -File "doc\htmlhelp\python*.chm")
- }
- $hashes = $files | `
- Sort-Object Name | `
- Format-Table Name, @{
- Label="MD5";
- Expression={(Get-FileHash $_ -Algorithm MD5).Hash}
- }, Length -AutoSize | `
- Out-String -Width 4096
- $d = mkdir "$(Build.ArtifactStagingDirectory)\hashes" -Force
- $hashes | Out-File "$d\hashes.txt" -Encoding ascii
- $hashes
- workingDirectory: $(Build.BinariesDirectory)
- displayName: 'Generate hashes'
-
- - powershell: |
- "Copying:"
- $files = gci -File "msi\*\python*.asc", "embed\*.asc"
- if ("$(DoCHM)" -ieq "true") {
- $files = $files + (gci -File "doc\htmlhelp\*.asc")
- }
- $files.FullName
- $d = mkdir "$(Build.ArtifactStagingDirectory)\hashes" -Force
- move $files $d -Force
- gci msi -Directory | %{ move "msi\$_\*.asc" (mkdir "$d\$_" -Force) }
- workingDirectory: $(Build.BinariesDirectory)
- displayName: 'Copy GPG signatures for build'
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish Artifact: hashes'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)\hashes'
- artifactName: hashes
diff --git a/.azure-pipelines/windows-release/stage-publish-store.yml b/.azure-pipelines/windows-release/stage-publish-store.yml
deleted file mode 100644
index 0eae21e..0000000
--- a/.azure-pipelines/windows-release/stage-publish-store.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-parameters:
- BuildToPublish: ''
-
-jobs:
-- job: Publish_Store
- displayName: Publish Store packages
- condition: and(succeeded(), eq(variables['DoMSIX'], 'true'), ne(variables['SkipMSIXPublish'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- steps:
- - checkout: none
-
- - ${{ 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 }}
-
- - ${{ 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
diff --git a/.azure-pipelines/windows-release/stage-sign.yml b/.azure-pipelines/windows-release/stage-sign.yml
deleted file mode 100644
index 4481aa8..0000000
--- a/.azure-pipelines/windows-release/stage-sign.yml
+++ /dev/null
@@ -1,130 +0,0 @@
-parameters:
- Include: '*.exe, *.dll, *.pyd, *.cat, *.ps1'
- Exclude: 'vcruntime*, libffi*, libcrypto*, libssl*'
-
-jobs:
-- job: Sign_Python
- displayName: Sign Python binaries
- condition: and(succeeded(), variables['SigningCertificate'])
-
- pool:
- name: 'Windows Release'
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Name: win32
- amd64:
- Name: amd64
- arm64:
- Name: arm64
-
- steps:
- - template: ./checkout.yml
- - template: ./find-sdk.yml
-
- - powershell: |
- $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }};
- Write-Host "##vso[task.setvariable variable=SigningDescription]Python $($d.PythonVersion)"
- displayName: 'Update signing description'
- condition: and(succeeded(), not(variables['SigningDescription']))
-
- - powershell: |
- Write-Host "##vso[build.addbuildtag]signed"
- displayName: 'Add build tags'
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: unsigned_bin_$(Name)'
- inputs:
- artifactName: unsigned_bin_$(Name)
- targetPath: $(Build.BinariesDirectory)\bin
-
- - powershell: |
- copy "$(Build.SourcesDirectory)\Lib\venv\scripts\common\Activate.ps1" .
- displayName: 'Copy files from source'
- workingDirectory: $(Build.BinariesDirectory)\bin
-
- - powershell: |
- $files = (gi ${{ parameters.Include }} -Exclude ${{ parameters.Exclude }})
- signtool sign /a /n "$(SigningCertificate)" /fd sha256 /d "$(SigningDescription)" $files
- displayName: 'Sign binaries'
- workingDirectory: $(Build.BinariesDirectory)\bin
-
- - powershell: |
- $files = (gi ${{ parameters.Include }} -Exclude ${{ parameters.Exclude }})
- $failed = $true
- foreach ($retry in 1..10) {
- signtool timestamp /tr http://timestamp.digicert.com/ /td sha256 $files
- if ($?) {
- $failed = $false
- break
- }
- sleep 5
- }
- if ($failed) {
- Write-Host "##vso[task.logissue type=error]Failed to timestamp files"
- }
- displayName: 'Timestamp binaries'
- workingDirectory: $(Build.BinariesDirectory)\bin
- continueOnError: true
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish artifact: bin_$(Name)'
- inputs:
- targetPath: '$(Build.BinariesDirectory)\bin'
- artifactName: bin_$(Name)
-
-
-- job: Dump_CertInfo
- displayName: Capture certificate info
- condition: and(succeeded(), variables['SigningCertificate'])
-
- pool:
- name: 'Windows Release'
-
- steps:
- - checkout: none
-
- - powershell: |
- $m = 'CN=$(SigningCertificate)'
- $c = ((gci Cert:\CurrentUser\My), (gci Cert:\LocalMachine\My)) | %{ $_ } | `
- ?{ $_.Subject -match $m -and $_.NotBefore -lt (Get-Date) -and $_.NotAfter -gt (Get-Date) } | `
- select -First 1
- if (-not $c) {
- Write-Host "Failed to find certificate for $(SigningCertificate)"
- exit
- }
- $d = mkdir "$(Build.BinariesDirectory)\tmp" -Force
- $cf = "$d\cert.cer"
- [IO.File]::WriteAllBytes($cf, $c.Export("Cer"))
- $csha = (certutil -dump $cf | sls "Cert Hash\(sha256\): (.+)").Matches.Groups[1].Value
-
- $info = @{ Subject=$c.Subject; SHA256=$csha; }
-
- $d = mkdir "$(Build.BinariesDirectory)\cert" -Force
- $info | ConvertTo-JSON -Compress | Out-File -Encoding utf8 "$d\certinfo.json"
- displayName: "Extract certificate info"
-
- - task: PublishPipelineArtifact@0
- displayName: 'Publish artifact: cert'
- inputs:
- targetPath: '$(Build.BinariesDirectory)\cert'
- artifactName: cert
-
-
-- job: Mark_Unsigned
- displayName: Tag unsigned build
- condition: and(succeeded(), not(variables['SigningCertificate']))
-
- pool:
- vmImage: windows-2022
-
- steps:
- - checkout: none
-
- - powershell: |
- Write-Host "##vso[build.addbuildtag]unsigned"
- displayName: 'Add build tag'
diff --git a/.azure-pipelines/windows-release/stage-test-embed.yml b/.azure-pipelines/windows-release/stage-test-embed.yml
deleted file mode 100644
index 252db95..0000000
--- a/.azure-pipelines/windows-release/stage-test-embed.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-jobs:
-- job: Test_Embed
- displayName: Test Embed
- condition: and(succeeded(), eq(variables['DoEmbed'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Name: win32
- amd64:
- Name: amd64
-
- steps:
- - checkout: none
-
- - task: DownloadBuildArtifacts@0
- displayName: 'Download artifact: embed'
- inputs:
- artifactName: embed
- downloadPath: $(Build.BinariesDirectory)
-
- - powershell: |
- $p = gi "$(Build.BinariesDirectory)\embed\python*embed-$(Name).zip"
- Expand-Archive -Path $p -DestinationPath "$(Build.BinariesDirectory)\Python"
- $p = gi "$(Build.BinariesDirectory)\Python\python.exe"
- Write-Host "##vso[task.prependpath]$(Split-Path -Parent $p)"
- displayName: 'Install Python and add to PATH'
-
- - script: |
- python -c "import sys; print(sys.version)"
- displayName: 'Collect version number'
-
- - script: |
- python -m site
- displayName: 'Collect site'
diff --git a/.azure-pipelines/windows-release/stage-test-msi.yml b/.azure-pipelines/windows-release/stage-test-msi.yml
deleted file mode 100644
index a471d05..0000000
--- a/.azure-pipelines/windows-release/stage-test-msi.yml
+++ /dev/null
@@ -1,108 +0,0 @@
-jobs:
-- job: Test_MSI
- displayName: Test MSI
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32_User:
- ExeMatch: 'python-[\dabrc.]+\.exe'
- Logs: $(Build.ArtifactStagingDirectory)\logs\win32_User
- InstallAllUsers: 0
- win32_Machine:
- ExeMatch: 'python-[\dabrc.]+\.exe'
- Logs: $(Build.ArtifactStagingDirectory)\logs\win32_Machine
- InstallAllUsers: 1
- amd64_User:
- ExeMatch: 'python-[\dabrc.]+-amd64\.exe'
- Logs: $(Build.ArtifactStagingDirectory)\logs\amd64_User
- InstallAllUsers: 0
- amd64_Machine:
- ExeMatch: 'python-[\dabrc.]+-amd64\.exe'
- Logs: $(Build.ArtifactStagingDirectory)\logs\amd64_Machine
- InstallAllUsers: 1
-
- steps:
- - checkout: none
-
- - task: DownloadPipelineArtifact@1
- displayName: 'Download artifact: msi'
- inputs:
- artifactName: msi
- targetPath: $(Build.BinariesDirectory)\msi
-
- - powershell: |
- $p = (gci -r *.exe | ?{ $_.Name -match '$(ExeMatch)' } | select -First 1)
- Write-Host "##vso[task.setvariable variable=SetupExe]$($p.FullName)"
- Write-Host "##vso[task.setvariable variable=SetupExeName]$($p.Name)"
- displayName: 'Find installer executable'
- workingDirectory: $(Build.BinariesDirectory)\msi
-
- - script: >
- "$(SetupExe)"
- /passive
- /log "$(Logs)\install\log.txt"
- TargetDir="$(Build.BinariesDirectory)\Python"
- Include_debug=1
- Include_symbols=1
- InstallAllUsers=$(InstallAllUsers)
- displayName: 'Install Python'
-
- - powershell: |
- $p = gi "$(Build.BinariesDirectory)\Python\python.exe"
- Write-Host "##vso[task.prependpath]$(Split-Path -Parent $p)"
- displayName: 'Add test Python to PATH'
-
- - script: |
- python -c "import sys; print(sys.version)"
- displayName: 'Collect version number'
-
- - script: |
- python -m site
- displayName: 'Collect site'
-
- - powershell: |
- gci -r "${env:PROGRAMDATA}\Microsoft\Windows\Start Menu\Programs\Python*"
- displayName: 'Capture per-machine Start Menu items'
- - powershell: |
- gci -r "${env:APPDATA}\Microsoft\Windows\Start Menu\Programs\Python*"
- displayName: 'Capture per-user Start Menu items'
-
- - powershell: |
- gci -r "HKLM:\Software\WOW6432Node\Python"
- displayName: 'Capture per-machine 32-bit registry'
- - powershell: |
- gci -r "HKLM:\Software\Python"
- displayName: 'Capture per-machine native registry'
- - powershell: |
- gci -r "HKCU:\Software\Python"
- displayName: 'Capture current-user registry'
-
- - script: |
- python -m pip install "azure<0.10"
- python -m pip uninstall -y azure python-dateutil six
- displayName: 'Test (un)install package'
-
- - script: |
- python -m test -uall -v test_ttk_guionly test_tk test_idle
- displayName: 'Test Tkinter and Idle'
-
- - script: >
- "$(SetupExe)"
- /passive
- /uninstall
- /log "$(Logs)\uninstall\log.txt"
- displayName: 'Uninstall Python'
-
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: logs'
- condition: true
- continueOnError: true
- inputs:
- PathtoPublish: '$(Build.ArtifactStagingDirectory)\logs'
- ArtifactName: msi_testlogs
diff --git a/.azure-pipelines/windows-release/stage-test-nuget.yml b/.azure-pipelines/windows-release/stage-test-nuget.yml
deleted file mode 100644
index c500baf..0000000
--- a/.azure-pipelines/windows-release/stage-test-nuget.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-jobs:
-- job: Test_Nuget
- displayName: Test Nuget
- condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
-
- pool:
- vmImage: windows-2022
-
- workspace:
- clean: all
-
- strategy:
- matrix:
- win32:
- Package: pythonx86
- amd64:
- Package: python
-
- steps:
- - checkout: none
-
- - task: DownloadBuildArtifacts@0
- displayName: 'Download artifact: nuget'
- inputs:
- artifactName: nuget
- downloadPath: $(Build.BinariesDirectory)
-
- - task: NugetToolInstaller@0
- inputs:
- versionSpec: '>= 5'
-
- - powershell: >
- nuget install
- $(Package)
- -Source "$(Build.BinariesDirectory)\nuget"
- -OutputDirectory "$(Build.BinariesDirectory)\install"
- -Prerelease
- -ExcludeVersion
- -NonInteractive
- displayName: 'Install Python'
-
- - powershell: |
- $p = gi "$(Build.BinariesDirectory)\install\$(Package)\tools\python.exe"
- Write-Host "##vso[task.prependpath]$(Split-Path -Parent $p)"
- displayName: 'Add test Python to PATH'
-
- - script: |
- python -c "import sys; print(sys.version)"
- displayName: 'Collect version number'
-
- - script: |
- python -m site
- displayName: 'Collect site'
-
- - script: |
- python -m pip install "azure<0.10"
- python -m pip uninstall -y azure python-dateutil six
- displayName: 'Test (un)install package'