@@ -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"
@@ -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
@@ -96,6 +89,10 @@ parameters:
9689 displayName : " Build number to publish (0 to skip)"
9790 type : number
9891 default : ' 0'
92+ - name : BuildToRepackage
93+ displayName : " Build number to repackage and publish (0 to skip)"
94+ type : number
95+ default : ' 0'
9996- name : SignNuget
10097 displayName : " Enable Nuget signing (not recommended right now)"
10198 type : boolean
@@ -109,39 +106,44 @@ variables:
109106 SourceTag : ${{ parameters.SourceTag }}
110107 ${{ if ne(parameters.SourceCommit, 'empty') }} :
111108 SourceCommit : ${{ parameters.SourceCommit }}
112- ${{ else }} :
113- SourceCommit : ' '
114109 ${{ if ne(parameters.SigningCertificate, 'Unsigned') }} :
115110 SigningCertificate : ${{ parameters.SigningCertificate }}
116111 SigningDescription : ${{ parameters.SigningDescription }}
117- ${{ if eq(parameters.SigningCertificate, 'PythonSoftwareFoundation') }} :
118- IsRealSigned : true
119- ${{ else }} :
120- IsRealSigned : false
121- DoFreethreaded : ${{ parameters.DoFreethreaded }}
122- DoLayout : ${{ parameters.DoLayout }}
123- DoMSIX : ${{ parameters.DoMSIX }}
124- DoNuget : ${{ parameters.DoNuget }}
125- DoEmbed : ${{ parameters.DoEmbed }}
126- DoMSI : ${{ parameters.DoMSI }}
127- DoPyManager : ${{ parameters.DoPyManager }}
128- DoPublish : ${{ parameters.DoPublish }}
112+ IsRealSigned : ${{ eq(parameters.SigningCertificate, 'PythonSoftwareFoundation') }}
129113 PublishARM64 : ${{ parameters.DoARM64 }}
114+ ${{ if ne(parameters.BuildToPublish, '0') }} :
115+ BuildToPublish : build_to_publish
116+ ${{ else }} :
117+ BuildToPublish : current
118+ ${{ if ne(parameters.BuildToRepackage, '0') }} :
119+ BuildToPackage : build_to_package
120+ ${{ else }} :
121+ BuildToPackage : current
130122# QUEUE TIME VARIABLES
131123# PyDotOrgUsername: ''
132124# PyDotOrgServer: ''
133125
126+ resources :
127+ pipelines :
128+ - ${{ if ne(parameters.BuildToPublish, '0') }} :
129+ - pipeline : build_to_publish
130+ source : $(Build.DefinitionName)
131+ version : ${{ parameters.BuildToPublish }}
132+ - ${{ if ne(parameters.BuildToRepackage, '0') }} :
133+ - pipeline : build_to_package
134+ source : $(Build.DefinitionName)
135+ version : ${{ parameters.BuildToRepackage }}
136+
134137trigger : none
135138pr : none
136139
137140stages :
138- - ${{ if eq(parameters.BuildToPublish, '0') }} :
141+ - ${{ if and( eq(parameters.BuildToPublish, '0'), eq(parameters.BuildToRepackage, '0') ) }} :
139142 - stage : Build
140143 displayName : Build binaries
141144 jobs :
142145 - template : stage-build.yml
143146 parameters :
144- ARM64TclTk : ${{ parameters.ARM64TclTk }}
145147 DoFreethreaded : ${{ parameters.DoFreethreaded }}
146148 DoPGO : ${{ parameters.DoPGO }}
147149 DoPGOARM64 : ${{ parameters.DoPGOARM64 }}
@@ -152,142 +154,97 @@ stages:
152154 jobs :
153155 - template : stage-sign.yml
154156 parameters :
155- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
156- SigningCertificate : ${{ parameters.SigningCertificate }}
157+ SigningCertificate : ${{ parameters.SigningCertificate }}
157158 DoFreethreaded : ${{ parameters.DoFreethreaded }}
158159
160+ - ${{ if eq(parameters.BuildToPublish, '0') }} :
159161 - stage : Layout
160- displayName : Generate layouts
161- dependsOn : Sign
162+ ${{ if eq(parameters.BuildToRepackage, '0') }} :
163+ displayName : Generate layouts
164+ dependsOn : Sign
165+ ${{ else }} :
166+ displayName : Generate layouts from build ${{ parameters.BuildToRepackage }}
167+ dependsOn : []
162168 jobs :
163169 - template : stage-layout-full.yml
164170 parameters :
165171 ARM64TclTk : ${{ parameters.ARM64TclTk }}
166172 DoFreethreaded : ${{ parameters.DoFreethreaded }}
167- - template : stage-layout-embed.yml
168- - template : stage-layout-nuget.yml
169- parameters :
170- DoFreethreaded : ${{ parameters.DoFreethreaded }}
171- - template : stage-layout-pymanager.yml
172- parameters :
173- ARM64TclTk : ${{ parameters.ARM64TclTk }}
174- DoFreethreaded : ${{ parameters.DoFreethreaded }}
175- DoEmbed : ${{ parameters.DoEmbed }}
173+ - ${{ if eq(parameters.DoEmbed, 'true') }} :
174+ - template : stage-layout-embed.yml
175+ - ${{ if eq(parameters.DoNuget, 'true') }} :
176+ - template : stage-layout-nuget.yml
177+ parameters :
178+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
179+ - ${{ if eq(parameters.DoMSIX, 'true') }} :
180+ - template : stage-layout-msix.yml
181+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
182+ - template : stage-layout-pymanager.yml
183+ parameters :
184+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
185+ DoEmbed : ${{ parameters.DoEmbed }}
186+ ${{ if ne(parameters.BuildToRepackage, '0') }} :
187+ UseLayoutScriptFromBranch : main
176188
177189 - stage : Pack
178190 dependsOn : Layout
191+ displayName : Pack
179192 jobs :
180- - template : stage-pack-nuget.yml
181- parameters :
182- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
183- ${{ if eq(parameters.SignNuget, 'true') }} :
184- SigningCertificate : ${{ parameters.SigningCertificate }}
185- DoFreethreaded : ${{ parameters.DoFreethreaded }}
186-
187- - stage : Test
188- dependsOn : Pack
189- jobs :
190- - template : stage-test-embed.yml
191- - template : stage-test-nuget.yml
192- parameters :
193- DoFreethreaded : ${{ parameters.DoFreethreaded }}
194-
195- - ${{ if eq(parameters.DoMSIX, 'true') }} :
196- - stage : Layout_MSIX
197- displayName : Generate MSIX layouts
198- dependsOn : Sign
199- jobs :
200- - template : stage-layout-msix.yml
193+ - ${{ if eq(parameters.DoEmbed, 'true') }} :
194+ - template : stage-pack-embed.yml
195+ - ${{ if eq(parameters.DoMSI, 'true') }} :
196+ - template : stage-msi.yml
201197 parameters :
202- ARM64TclTk : ${{ parameters.ARM64TclTk }}
203-
204- - stage : Pack_MSIX
205- displayName : Package MSIX
206- dependsOn : Layout_MSIX
207- jobs :
198+ DoARM64 : ${{ parameters.DoARM64}}
199+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
200+ - ${{ if eq(parameters.DoMSIX, 'true') }} :
208201 - template : stage-pack-msix.yml
209202 parameters :
210203 ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
211204 SigningCertificate : ${{ parameters.SigningCertificate }}
212-
213- - ${{ if eq(parameters.DoMSI, 'true') }} :
214- - stage : Build_MSI
215- displayName : Build MSI installer
216- dependsOn : Sign
217- jobs :
218- - template : stage-msi.yml
205+ - ${{ if eq(parameters.DoNuget, 'true') }} :
206+ - template : stage-pack-nuget.yml
219207 parameters :
220- ARM64TclTk : ${{ parameters.ARM64TclTk }}
221- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
222- SigningCertificate : ${{ parameters.SigningCertificate }}
223- DoARM64 : ${{ parameters.DoARM64}}
208+ ${{ if eq(parameters.SignNuget, 'true') }} :
209+ ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
210+ SigningCertificate : ${{ parameters.SigningCertificate }}
224211 DoFreethreaded : ${{ parameters.DoFreethreaded }}
225212
226- - stage : Test_MSI
227- displayName : Test MSI installer
228- dependsOn : Build_MSI
229- jobs :
213+ - stage : Test
214+ dependsOn : Pack
215+ jobs :
216+ - ${{ if eq(parameters.DoEmbed, 'true') }} :
217+ - template : stage-test-embed.yml
218+ - ${{ if eq(parameters.DoMSI, 'true') }} :
230219 - template : stage-test-msi.yml
231220 parameters :
232221 DoFreethreaded : ${{ parameters.DoFreethreaded }}
233-
234- - ${{ if eq(parameters.DoPublish, 'true') }} :
235- - ${{ if eq(parameters.DoPyManager, 'true') }} :
236- - stage : PublishPyManager
237- displayName : Publish for PyManager
238- dependsOn : ['Test_MSI', 'Test']
239- jobs :
240- - template : stage-publish-pymanager.yml
241-
242- - ${{ if eq(parameters.DoMSI, 'true') }} :
243- - stage : PublishPyDotOrg
244- displayName : Publish to python.org
245- dependsOn : ['Test_MSI', 'Test']
246- jobs :
247- - template : stage-publish-pythonorg.yml
248- parameters :
249- IncludeGPG : ${{ parameters.DoGPG }}
250-
251222 - ${{ if eq(parameters.DoNuget, 'true') }} :
252- - stage : PublishNuget
253- displayName : Publish to nuget.org
254- ${{ if eq(parameters.DoMSI, 'true') }} :
255- dependsOn : ['Test_MSI', 'Test']
256- ${{ else }} :
257- dependsOn : ' Test'
258- jobs :
259- - template : stage-publish-nugetorg.yml
260-
261- - ${{ if eq(parameters.DoMSIX, 'true') }} :
262- - stage : PublishStore
263- displayName : Publish to Store
264- ${{ if eq(parameters.DoMSI, 'true') }} :
265- dependsOn : ['Test_MSI', 'Pack_MSIX']
266- ${{ else }} :
267- dependsOn : ' Pack_MSIX'
268- jobs :
269- - template : stage-publish-store.yml
223+ - template : stage-test-nuget.yml
224+ parameters :
225+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
226+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
227+ - template : stage-test-pymanager.yml
228+ parameters :
229+ DoEmbed : ${{ parameters.DoEmbed }}
230+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
270231
271- - ${{ else }} :
272- - stage : PublishExisting
273- displayName : Publish existing build
274- dependsOn : []
232+ - ${{ if eq(parameters.DoPublish, 'true') }} :
233+ - stage : Publish
234+ displayName : Publish
235+ dependsOn :
236+ - ${{ if eq(parameters.BuildToPublish, '0') }} :
237+ - Test
275238 jobs :
276239 - ${{ if eq(parameters.DoPyManager, 'true') }} :
277240 - template : stage-publish-pymanager.yml
278-
241+ parameters :
242+ DoEmbed : ${{ parameters.DoEmbed }}
243+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
279244 - ${{ if eq(parameters.DoMSI, 'true') }} :
280245 - template : stage-publish-pythonorg.yml
281246 parameters :
282- BuildToPublish : ${{ parameters.BuildToPublish }}
247+ DoEmbed : ${{ parameters.DoEmbed }}
283248 IncludeGPG : ${{ parameters.DoGPG }}
284-
285249 - ${{ if eq(parameters.DoNuget, 'true') }} :
286250 - template : stage-publish-nugetorg.yml
287- parameters :
288- BuildToPublish : ${{ parameters.BuildToPublish }}
289-
290- - ${{ if eq(parameters.DoMSIX, 'true') }} :
291- - template : stage-publish-store.yml
292- parameters :
293- BuildToPublish : ${{ parameters.BuildToPublish }}
0 commit comments