@@ -11,6 +11,7 @@ parameters:
1111 - ' Yhg1s'
1212 - ' pablogsal'
1313 - ' ambv'
14+ - ' zooba'
1415 - ' (Other)'
1516- name : GitRemote_Other
1617 displayName : " If Other, specify Git remote"
@@ -39,7 +40,7 @@ parameters:
3940- name : SigningDescription
4041 displayName : " Signature description"
4142 type : string
42- default : ' Built: $(Build.BuildNumber )'
43+ default : ' (default )'
4344- name : DoGPG
4445 displayName : " Include GPG signatures (3.13 and earlier)"
4546 type : boolean
@@ -52,14 +53,6 @@ parameters:
5253 displayName : " Publish ARM64 build (3.11 and later)"
5354 type : boolean
5455 default : true
55- # Because there is no ARM64 Tcl/Tk pre-3.11, we need a separate option
56- # to keep those builds working when the files are going to be absent.
57- # Eventually when we stop releasing anything that old, we can drop this
58- # argument (and make it implicitly always 'true')
59- - name : ARM64TclTk
60- displayName : " Use Tcl/Tk for ARM64 (3.11 and later)"
61- type : boolean
62- default : true
6356- name : DoPGO
6457 displayName : " Run PGO"
6558 type : boolean
@@ -88,15 +81,32 @@ parameters:
8881 displayName : " Produce EXE/MSI installer"
8982 type : boolean
9083 default : true
84+ - name : DoPyManager
85+ displayName : " Produce PyManager package"
86+ type : boolean
87+ default : true
9188- name : BuildToPublish
92- displayName : " Build number to publish (0 to skip)"
93- type : number
94- default : ' 0'
89+ displayName : " Republish a build (select in Resources)"
90+ type : string
91+ default : current
92+ values : ['current', 'build_to_publish']
93+ - name : BuildToPackage
94+ displayName : " Repackage and publish a build (select in Resources)"
95+ type : string
96+ default : current
97+ values : ['current', 'build_to_package']
9598- name : SignNuget
9699 displayName : " Enable Nuget signing (not recommended right now)"
97100 type : boolean
98101 default : false
99102
103+ resources :
104+ pipelines :
105+ - pipeline : build_to_publish
106+ source : ' Windows-Release'
107+ - pipeline : build_to_package
108+ source : ' Windows-Release'
109+
100110variables :
101111 ${{ if ne(parameters.GitRemote, '(Other)') }} :
102112 GitRemote : ${{ parameters.GitRemote }}
@@ -105,22 +115,12 @@ variables:
105115 SourceTag : ${{ parameters.SourceTag }}
106116 ${{ if ne(parameters.SourceCommit, 'empty') }} :
107117 SourceCommit : ${{ parameters.SourceCommit }}
108- ${{ else }} :
109- SourceCommit : ' '
110- ${{ if ne(parameters.SigningCertificate, 'Unsigned') }} :
111- SigningCertificate : ${{ parameters.SigningCertificate }}
112- SigningDescription : ${{ parameters.SigningDescription }}
113118 ${{ if eq(parameters.SigningCertificate, 'PythonSoftwareFoundation') }} :
114119 IsRealSigned : true
115120 ${{ else }} :
116121 IsRealSigned : false
117- DoFreethreaded : ${{ parameters.DoFreethreaded }}
118- DoLayout : ${{ parameters.DoLayout }}
119- DoMSIX : ${{ parameters.DoMSIX }}
120- DoNuget : ${{ parameters.DoNuget }}
121- DoEmbed : ${{ parameters.DoEmbed }}
122- DoMSI : ${{ parameters.DoMSI }}
123- DoPublish : ${{ parameters.DoPublish }}
122+ ${{ if ne(parameters.SigningDescription, '(default)') }} :
123+ SigningDescription : ${{ parameters.SigningDescription }}
124124 PublishARM64 : ${{ parameters.DoARM64 }}
125125# QUEUE TIME VARIABLES
126126# PyDotOrgUsername: ''
@@ -130,144 +130,135 @@ trigger: none
130130pr : none
131131
132132stages :
133- - ${{ if eq(parameters.BuildToPublish, '0' ) }} :
133+ - ${{ if and( eq(parameters.BuildToPublish, 'current'), eq(parameters.BuildToPackage, 'current') ) }} :
134134 - stage : Build
135135 displayName : Build binaries
136136 jobs :
137137 - template : stage-build.yml
138138 parameters :
139- ARM64TclTk : ${{ parameters.ARM64TclTk }}
140139 DoFreethreaded : ${{ parameters.DoFreethreaded }}
141140 DoPGO : ${{ parameters.DoPGO }}
142141 DoPGOARM64 : ${{ parameters.DoPGOARM64 }}
142+ ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
143+ ToBeSigned : true
143144
144145 - stage : Sign
145146 displayName : Sign binaries
146147 dependsOn : Build
147148 jobs :
148149 - template : stage-sign.yml
149150 parameters :
150- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
151- SigningCertificate : ${{ parameters.SigningCertificate }}
151+ SigningCertificate : ${{ parameters.SigningCertificate }}
152152 DoFreethreaded : ${{ parameters.DoFreethreaded }}
153153
154+ - ${{ if eq(parameters.BuildToPublish, 'current') }} :
154155 - stage : Layout
155- displayName : Generate layouts
156- dependsOn : Sign
156+ ${{ if eq(parameters.BuildToPackage, 'current') }} :
157+ displayName : Generate layouts
158+ dependsOn : Sign
159+ ${{ else }} :
160+ displayName : Generate layouts from prior build
161+ dependsOn : []
157162 jobs :
158163 - template : stage-layout-full.yml
159164 parameters :
160- ARM64TclTk : ${{ parameters.ARM64TclTk }}
165+ BuildToPackage : ${{ parameters.BuildToPackage }}
161166 DoFreethreaded : ${{ parameters.DoFreethreaded }}
162- - template : stage-layout-embed.yml
163- - template : stage-layout-nuget.yml
167+ - template : stage-layout-symbols.yml
164168 parameters :
169+ BuildToPackage : ${{ parameters.BuildToPackage }}
165170 DoFreethreaded : ${{ parameters.DoFreethreaded }}
171+ - ${{ if eq(parameters.DoEmbed, 'true') }} :
172+ - template : stage-layout-embed.yml
173+ parameters :
174+ BuildToPackage : ${{ parameters.BuildToPackage }}
175+ - ${{ if eq(parameters.DoNuget, 'true') }} :
176+ - template : stage-layout-nuget.yml
177+ parameters :
178+ BuildToPackage : ${{ parameters.BuildToPackage }}
179+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
180+ - ${{ if eq(parameters.DoMSIX, 'true') }} :
181+ - template : stage-layout-msix.yml
182+ parameters :
183+ BuildToPackage : ${{ parameters.BuildToPackage }}
184+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
185+ - template : stage-layout-pymanager.yml
186+ parameters :
187+ BuildToPackage : ${{ parameters.BuildToPackage }}
188+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
189+ DoEmbed : ${{ parameters.DoEmbed }}
190+ ${{ if ne(parameters.BuildToPackage, 'current') }} :
191+ UseLayoutScriptFromBranch : main
166192
167193 - stage : Pack
168194 dependsOn : Layout
195+ displayName : Pack
169196 jobs :
170- - template : stage-pack-nuget.yml
171- parameters :
172- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
173- ${{ if eq(parameters.SignNuget, 'true') }} :
174- SigningCertificate : ${{ parameters.SigningCertificate }}
175- DoFreethreaded : ${{ parameters.DoFreethreaded }}
176-
177- - stage : Test
178- dependsOn : Pack
179- jobs :
180- - template : stage-test-embed.yml
181- - template : stage-test-nuget.yml
182- parameters :
183- DoFreethreaded : ${{ parameters.DoFreethreaded }}
184-
185- - ${{ if eq(parameters.DoMSIX, 'true') }} :
186- - stage : Layout_MSIX
187- displayName : Generate MSIX layouts
188- dependsOn : Sign
189- jobs :
190- - template : stage-layout-msix.yml
197+ # - ${{ if eq(parameters.DoEmbed, 'true') }}:
198+ # - template: stage-pack-embed.yml
199+ - ${{ if eq(parameters.DoMSI, 'true') }} :
200+ - template : stage-msi.yml
191201 parameters :
192- ARM64TclTk : ${{ parameters.ARM64TclTk }}
193-
194- - stage : Pack_MSIX
195- displayName : Package MSIX
196- dependsOn : Layout_MSIX
197- jobs :
202+ BuildToPackage : ${{ parameters.BuildToPackage }}
203+ DoARM64 : ${{ parameters.DoARM64}}
204+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
205+ - ${{ if eq(parameters.DoMSIX, 'true') }} :
198206 - template : stage-pack-msix.yml
199207 parameters :
200208 ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
201209 SigningCertificate : ${{ parameters.SigningCertificate }}
202-
203- - ${{ if eq(parameters.DoMSI, 'true') }} :
204- - stage : Build_MSI
205- displayName : Build MSI installer
206- dependsOn : Sign
207- jobs :
208- - template : stage-msi.yml
210+ - ${{ if eq(parameters.DoNuget, 'true') }} :
211+ - template : stage-pack-nuget.yml
209212 parameters :
210- ARM64TclTk : ${{ parameters.ARM64TclTk }}
211- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
212- SigningCertificate : ${{ parameters.SigningCertificate }}
213- DoARM64 : ${{ parameters.DoARM64}}
213+ ${{ if eq(parameters.SignNuget, 'true') }} :
214+ ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
215+ SigningCertificate : ${{ parameters.SigningCertificate }}
214216 DoFreethreaded : ${{ parameters.DoFreethreaded }}
215-
216- - stage : Test_MSI
217- displayName : Test MSI installer
218- dependsOn : Build_MSI
219- jobs :
220- - template : stage-test-msi.yml
217+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
218+ - template : stage-pack-pymanager.yml
221219 parameters :
222220 DoFreethreaded : ${{ parameters.DoFreethreaded }}
221+ DoEmbed : ${{ parameters.DoEmbed }}
223222
224- - ${{ if eq(parameters.DoPublish, 'true') }} :
223+ - stage : Test
224+ dependsOn : Pack
225+ jobs :
226+ - ${{ if eq(parameters.DoEmbed, 'true') }} :
227+ - template : stage-test-embed.yml
225228 - ${{ if eq(parameters.DoMSI, 'true') }} :
226- - stage : PublishPyDotOrg
227- displayName : Publish to python.org
228- dependsOn : ['Test_MSI', 'Test']
229- jobs :
230- - template : stage-publish-pythonorg.yml
231- parameters :
232- IncludeGPG : ${{ parameters.DoGPG }}
233-
229+ - template : stage-test-msi.yml
230+ parameters :
231+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
234232 - ${{ if eq(parameters.DoNuget, 'true') }} :
235- - stage : PublishNuget
236- displayName : Publish to nuget.org
237- ${{ if eq(parameters.DoMSI, 'true') }} :
238- dependsOn : ['Test_MSI', 'Test']
239- ${{ else }} :
240- dependsOn : ' Test'
241- jobs :
242- - template : stage-publish-nugetorg.yml
243-
244- - ${{ if eq(parameters.DoMSIX, 'true') }} :
245- - stage : PublishStore
246- displayName : Publish to Store
247- ${{ if eq(parameters.DoMSI, 'true') }} :
248- dependsOn : ['Test_MSI', 'Pack_MSIX']
249- ${{ else }} :
250- dependsOn : ' Pack_MSIX'
251- jobs :
252- - template : stage-publish-store.yml
233+ - template : stage-test-nuget.yml
234+ parameters :
235+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
236+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
237+ - template : stage-test-pymanager.yml
238+ parameters :
239+ DoEmbed : ${{ parameters.DoEmbed }}
240+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
253241
254- - ${{ else }} :
255- - stage : PublishExisting
256- displayName : Publish existing build
257- dependsOn : []
242+ - ${{ if eq(parameters.DoPublish, 'true') }} :
243+ - stage : Publish
244+ displayName : Publish
245+ dependsOn :
246+ - ${{ if eq(parameters.BuildToPublish, 'current') }} :
247+ - Test
258248 jobs :
249+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
250+ - template : stage-publish-pymanager.yml
251+ parameters :
252+ BuildToPublish : ${{ parameters.BuildToPublish }}
253+ DoEmbed : ${{ parameters.DoEmbed }}
254+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
259255 - ${{ if eq(parameters.DoMSI, 'true') }} :
260256 - template : stage-publish-pythonorg.yml
261257 parameters :
262258 BuildToPublish : ${{ parameters.BuildToPublish }}
259+ DoEmbed : ${{ parameters.DoEmbed }}
263260 IncludeGPG : ${{ parameters.DoGPG }}
264-
265261 - ${{ if eq(parameters.DoNuget, 'true') }} :
266262 - template : stage-publish-nugetorg.yml
267263 parameters :
268264 BuildToPublish : ${{ parameters.BuildToPublish }}
269-
270- - ${{ if eq(parameters.DoMSIX, 'true') }} :
271- - template : stage-publish-store.yml
272- parameters :
273- BuildToPublish : ${{ parameters.BuildToPublish }}
0 commit comments