8000 Improve the Windows release build scripts (GH-30771) · python/cpython@70c1646 · GitHub
[go: up one dir, main page]

Skip to content

Commit 70c1646

Browse files
authored
Improve the Windows release build scripts (GH-30771)
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
1 parent cd8de40 commit 70c1646

17 files changed

+293
-229
lines changed

.azure-pipelines/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ jobs:
9898
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
9999

100100
pool:
101-
vmImage: windows-2019
101+
vmImage: windows-2022
102102

103103
strategy:
104104
matrix:

.azure-pipelines/pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ jobs:
9898
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
9999

100100
pool:
101-
vmImage: windows-2019
101+
vmImage: windows-2022
102102

103103
strategy:
104104
matrix:

.azure-pipelines/windows-release.yml

Lines changed: 173 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,129 +1,183 @@
11
name: Release_$(Build.SourceBranchName)_$(SourceTag)_$(Date:yyyyMMdd)$(Rev:.rr)
22

3+
parameters:
4+
- name: GitRemote
5+
displayName: "Git remote"
6+
type: string
7+
default: python
8+
values:
9+
- 'python'
10+
- 'pablogsal'
11+
- 'ambv'
12+
- '(Other)'
13+
- name: GitRemote_Other
14+
displayName: "If Other, specify Git remote"
15+
type: string
16+
default: 'python'
17+
- name: SourceTag
18+
displayName: "Git tag"
19+
type: string
20+
default: main
21+
- name: DoPublish
22+
displayName: "Publish release"
23+
type: boolean
24+
default: false
25+
- name: SigningCertificate
26+
displayName: "Code signing certificate"
27+
type: string
28+
default: 'Python Software Foundation'
29+
values:
30+
- 'Python Software Foundation'
31+
- 'TestSign'
32+
- 'Unsigned'
33+
- name: SigningDescription
34+
displayName: "Signature description"
35+
type: string
36+
default: 'Built: $(Build.BuildNumber)'
37+
- name: DoPGO
38+
displayName: "Run PGO"
39+
type: boolean
40+
default: true
41+
- name: DoLayout
42+
displayName: "Produce full layout artifact"
43+
type: boolean
44+
default: true
45+
- name: DoMSIX
46+
displayName: "Produce Store packages"
47+
type: boolean
48+
default: true
49+
- name: DoNuget
50+
displayName: "Produce Nuget packages"
51+
type: boolean
52+
default: true
53+
- name: DoEmbed
54+
displayName: "Produce embeddable package"
55+
type: boolean
56+
default: true
57+
- name: DoMSI
58+
displayName: "Produce EXE/MSI installer"
59+
type: boolean
60+
default: true
61+
- name: BuildToPublish
62+
displayName: "Build number to publish (0 to skip)"
63+
type: number
64+
default: '0'
65+
366
variables:
467
__RealSigningCertificate: 'Python Software Foundation'
68+
${{ if ne(parameters.GitRemote, '(Other)') }}:
69+
GitRemote: ${{ parameters.GitRemote }}
70+
${{ else }}:
71+
GitRemote: ${{ parameters.GitRemote_Other }}
72+
SourceTag: ${{ parameters.SourceTag }}
73+
DoPGO: ${{ parameters.DoPGO }}
74+
${{ if ne(parameters.SigningCertificate, 'Unsigned') }}:
75+
SigningCertificate: ${{ parameters.SigningCertificate }}
76+
SigningDescription: ${{ parameters.SigningDescription }}
77+
DoLayout: ${{ parameters.DoLayout }}
78+
DoMSIX: ${{ parameters.DoMSIX }}
79+
DoNuget: ${{ parameters.DoNuget }}
80+
DoEmbed: ${{ parameters.DoEmbed }}
81+
DoMSI: ${{ parameters.DoMSI }}
82+
DoPublish: ${{ parameters.DoPublish }}
583
# QUEUE TIME VARIABLES
6-
# GitRemote: python
7-
# SourceTag:
8-
# DoPGO: true
9-
# SigningCertificate: 'Python Software Foundation'
10-
# SigningDescription: 'Built: $(Build.BuildNumber)'
11-
# DoLayout: true
12-
# DoMSIX: true
13-
# DoNuget: true
14-
# DoEmbed: true
15-
# DoMSI: true
16-
# DoPublish: false
17-
# PyDotOrgUsername: ''
18-
# PyDotOrgServer: ''
19-
# BuildToPublish: ''
84+
# PyDotOrgUsername: ''
85+
# PyDotOrgServer: ''
2086

2187
trigger: none
2288
pr: none
2389

2490
stages:
25-
- stage: Build
26-
displayName: Build binaries
27-
condition: and(succeeded(), not(variables['BuildToPublish']))
28-
jobs:
29-
- template: windows-release/stage-build.yml
30-
31-
- stage: Sign
32-
displayName: Sign binaries
33-
dependsOn: Build
34-
condition: and(succeeded(), not(variables['BuildToPublish']))
35-
jobs:
36-
- template: windows-release/stage-sign.yml
37-
38-
- stage: Layout
39-
displayName: Generate layouts
40-
dependsOn: Sign
41-
condition: and(succeeded(), not(variables['BuildToPublish']))
42-
jobs:
43-
- template: windows-release/stage-layout-full.yml
44-
- template: windows-release/stage-layout-embed.yml
45-
- template: windows-release/stage-layout-nuget.yml
46-
47-
- stage: Pack
48-
dependsOn: Layout
49-
condition: and(succeeded(), not(variables['BuildToPublish']))
50-
jobs:
51-
- template: windows-release/stage-pack-nuget.yml
52-
53-
- stage: Test
54-
dependsOn: Pack
55-
condition: and(succeeded(), not(variables['BuildToPublish']))
56-
jobs:
57-
- template: windows-release/stage-test-embed.yml
58-
- template: windows-release/stage-test-nuget.yml
59-
60-
- stage: Layout_MSIX
61-
displayName: Generate MSIX layouts
62-
dependsOn: Sign
63-
condition: and(succeeded(), and(eq(variables['DoMSIX'], 'true'), not(variables['BuildToPublish'])))
64-
jobs:
65-
- template: windows-release/stage-layout-msix.yml
66-
67-
- stage: Pack_MSIX
68-
displayName: Package MSIX
69-
dependsOn: Layout_MSIX
70-
condition: and(succeeded(), not(variables['BuildToPublish']))
71-
jobs:
72-
- template: windows-release/stage-pack-msix.yml
73-
74-
- stage: Build_MSI
75-
displayName: Build MSI installer
76-
dependsOn: Sign
77-
condition: and(succeeded(), and(eq(variables['DoMSI'], 'true'), not(variables['BuildToPublish'])))
78-
jobs:
79-
- template: windows-release/stage-msi.yml
80-
81-
- stage: Test_MSI
82-
displayName: Test MSI installer
83-
dependsOn: Build_MSI
84-
condition: and(succeeded(), not(variables['BuildToPublish']))
85-
jobs:
86-
- template: windows-release/stage-test-msi.yml
87-
88-
- stage: PublishPyDotOrg
89-
displayName: Publish to python.org
90-
dependsOn: ['Test_MSI', 'Test']
91-
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish'])))
92-
jobs:
93-
- template: windows-release/stage-publish-pythonorg.yml
94-
95-
- stage: PublishNuget
96-
displayName: Publish to nuget.org
97-
dependsOn: Test
98-
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish'])))
99-
jobs:
100-
- template: windows-release/stage-publish-nugetorg.yml
101-
102-
- stage: PublishStore
103-
displayName: Publish to Store
104-
dependsOn: Pack_MSIX
105-
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish'])))
106-
jobs:
107-
- template: windows-release/stage-publish-store.yml
108-
109-
110-
- stage: PublishExistingPyDotOrg
111-
displayName: Publish existing build to python.org
112-
dependsOn: []
113-
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish']))
114-
jobs:
115-
- template: windows-release/stage-publish-pythonorg.yml
116-
117-
- stage: PublishExistingNuget
118-
displayName: Publish existing build to nuget.org
119-
dependsOn: []
120-
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish']))
121-
jobs:
122-
- template: windows-release/stage-publish-nugetorg.yml
123-
124-
- stage: PublishExistingStore
125-
displayName: Publish existing build to Store
126-
dependsOn: []
127-
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish']))
128-
jobs:
129-
- template: windows-release/stage-publish-store.yml
91+
- ${{ if eq(parameters.BuildToPublish, '0') }}:
92+
- stage: Build
93+
displayName: Build binaries
94+
jobs:
95+
- template: windows-release/stage-build.yml
96+
97+
- stage: Sign
98+
displayName: Sign binaries
99+
dependsOn: Build
100+
jobs:
101+
- template: windows-release/stage-sign.yml
102+
103+
- stage: Layout
104+
displayName: Generate layouts
105+
dependsOn: Sign
106+
jobs:
107+
- template: windows-release/stage-layout-full.yml
108+
- template: windows-release/stage-layout-embed.yml
109+
- template: windows-release/stage-layout-nuget.yml
110+
111+
- stage: Pack
112+
dependsOn: Layout
113+
jobs:
114+
- template: windows-release/stage-pack-nuget.yml
115+
116+
- stage: Test
117+
dependsOn: Pack
118+
jobs:
119+
- template: windows-release/stage-test-embed.yml
120+
- template: windows-release/stage-test-nuget.yml
121+
122+
- stage: Layout_MSIX
123+
displayName: Generate MSIX layouts
124+
dependsOn: Sign
125+
condition: and(succeeded(), eq(variables['DoMSIX'], 'true'))
126+
jobs:
127+
- template: windows-release/stage-layout-msix.yml
128+
129+
- stage: Pack_MSIX
130+
displayName: Package MSIX
131+
dependsOn: Layout_MSIX
132+
jobs:
133+
- template: windows-release/stage-pack-msix.yml
134+
135+
- stage: Build_MSI
136+
displayName: Build MSI installer
137+
dependsOn: Sign
138+
condition: and(succeeded(), eq(variables['DoMSI'], 'true'))
139+
jobs:
140+
- template: windows-release/stage-msi.yml
141+
142+
- stage: Test_MSI
143+
displayName: Test MSI installer
144+
dependsOn: Build_MSI
145+
jobs:
146+
- template: windows-release/stage-test-msi.yml
147+
148+
- ${{ if eq(parameters.DoPublish, 'true') }}:
149+
- stage: PublishPyDotOrg
150+
displayName: Publish to python.org
151+
dependsOn: ['Test_MSI', 'Test']
152+
jobs:
153+
- template: windows-release/stage-publish-pythonorg.yml
154+
155+
- stage: PublishNuget
156+
displayName: Publish to nuget.org
157+
dependsOn: Test
158+
jobs:
159+
- template: windows-release/stage-publish-nugetorg.yml
160+
161+
- stage: PublishStore
162+
displayName: Publish to Store
163+
dependsOn: Pack_MSIX
164+
jobs:
165+
- template: windows-release/stage-publish-store.yml
166+
167+
- ${{ else }}:
168+
- stage: PublishExisting
169+
displayName: Publish existing build
170+
dependsOn: []
171+
condition: and(succeeded(), eq(variables['DoPublish'], 'true'))
172+
jobs:
173+
- template: windows-release/stage-publish-pythonorg.yml
174+
parameters:
175+
BuildToPublish: ${{ parameters.BuildToPublish }}
176+
177+
- template: windows-release/stage-publish-nugetorg.yml
178+
parameters:
179+
BuildToPublish: ${{ parameters.BuildToPublish }}
180+
181+
- template: windows-release/stage-publish-store.yml
182+
parameters:
183+
BuildToPublish: ${{ parameters.BuildToPublish }}

.azure-pipelines/windows-release/stage-build.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ jobs:
22
- job: Build_Docs
33
displayName: Docs build
44
pool:
5-
name: 'Windows Release'
6-
#vmImage: windows-2019
5+
#name: 'Windows Release'
6+
vmImage: windows-2022
77

88
workspace:
99
clean: all
@@ -45,7 +45,7 @@ jobs:
4545
displayName: Python build
4646

4747
pool:
48-
vmImage: windows-2019
48+
vmImage: windows-2022
4949

5050
workspace:
5151
clean: all
@@ -91,7 +91,7 @@ jobs:
9191
condition: and(succeeded(), ne(variables['DoPGO'], 'true'))
9292

9393
pool:
94-
vmImage: windows-2019
94+
vmImage: windows-2022
9595

9696
workspace:
9797
clean: all
@@ -141,7 +141,7 @@ jobs:
141141
displayName: Publish Tcl/Tk Library
142142

143143
pool:
144-
vmImage: windows-2019
144+
vmImage: windows-2022
145145

146146
workspace:
147147
clean: all

.azure-pipelines/windows-release/stage-layout-embed.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ jobs:
44
condition: and(succeeded(), eq(variables['DoEmbed'], 'true'))
55

66
pool:
7-
vmImage: windows-2019
7+
vmImage: windows-2022
88

99
workspace:
1010
clean: all

.azure-pipelines/windows-release/stage-layout-full.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ jobs:
44
condition: and(succeeded(), eq(variables['DoLayout'], 'true'))
55

66
pool:
7-
vmImage: windows-2019
7+
vmImage: windows-2022
88

99
workspace:
1010
clean: all

.azure-pipelines/windows-release/stage-layout-msix.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ jobs:
33
displayName: Make MSIX layout
44

55
pool:
6-
vmImage: windows-2019
6+
vmImage: windows-2022
77

88
workspace:
99
clean: all

.azure-pipelines/windows-release/stage-layout-nuget.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ jobs:
44
condition: and(succeeded(), eq(variables['DoNuget'], 'true'))
55

66
pool:
7-
vmImage: windows-2019
7+
vmImage: windows-2022
88

99
workspace:
1010
clean: all

0 commit comments

Comments
 (0)
0