@@ -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,133 @@ 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 }}
166190
167191 - stage : Pack
168192 dependsOn : Layout
193+ displayName : Pack
169194 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
195+ # - ${{ if eq(parameters.DoEmbed, 'true') }}:
196+ # - template: stage-pack-embed.yml
197+ - ${{ if eq(parameters.DoMSI, 'true') }} :
198+ - template : stage-msi.yml
191199 parameters :
192- ARM64TclTk : ${{ parameters.ARM64TclTk }}
193-
194- - stage : Pack_MSIX
195- displayName : Package MSIX
196- dependsOn : Layout_MSIX
197- jobs :
200+ BuildToPackage : ${{ parameters.BuildToPackage }}
201+ DoARM64 : ${{ parameters.DoARM64}}
202+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
203+ - ${{ if eq(parameters.DoMSIX, 'true') }} :
198204 - template : stage-pack-msix.yml
199205 parameters :
200206 ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
201207 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
208+ - ${{ if eq(parameters.DoNuget, 'true') }} :
209+ - template : stage-pack-nuget.yml
209210 parameters :
210- ARM64TclTk : ${{ parameters.ARM64TclTk }}
211- ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
212- SigningCertificate : ${{ parameters.SigningCertificate }}
213- DoARM64 : ${{ parameters.DoARM64}}
211+ ${{ if eq(parameters.SignNuget, 'true') }} :
212+ ${{ if and(parameters.SigningCertificate, ne(parameters.SigningCertificate, 'Unsigned')) }} :
213+ SigningCertificate : ${{ parameters.SigningCertificate }}
214214 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
215+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
216+ - template : stage-pack-pymanager.yml
221217 parameters :
222218 DoFreethreaded : ${{ parameters.DoFreethreaded }}
219+ DoEmbed : ${{ parameters.DoEmbed }}
223220
224- - ${{ if eq(parameters.DoPublish, 'true') }} :
221+ - stage : Test
222+ dependsOn : Pack
223+ jobs :
224+ - ${{ if eq(parameters.DoEmbed, 'true') }} :
225+ - template : stage-test-embed.yml
225226 - ${{ 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-
227+ - template : stage-test-msi.yml
228+ parameters :
229+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
234230 - ${{ 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
231+ - template : stage-test-nuget.yml
232+ parameters :
233+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
234+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
235+ - template : stage-test-pymanager.yml
236+ parameters :
237+ DoEmbed : ${{ parameters.DoEmbed }}
238+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
253239
254- - ${{ else }} :
255- - stage : PublishExisting
256- displayName : Publish existing build
257- dependsOn : []
240+ - ${{ if eq(parameters.DoPublish, 'true') }} :
241+ - stage : Publish
242+ displayName : Publish
243+ dependsOn :
244+ - ${{ if eq(parameters.BuildToPublish, 'current') }} :
245+ - Test
258246 jobs :
247+ - ${{ if eq(parameters.DoPyManager, 'true') }} :
248+ - template : stage-publish-pymanager.yml
249+ parameters :
250+ BuildToPublish : ${{ parameters.BuildToPublish }}
251+ DoEmbed : ${{ parameters.DoEmbed }}
252+ DoFreethreaded : ${{ parameters.DoFreethreaded }}
259253 - ${{ if eq(parameters.DoMSI, 'true') }} :
260254 - template : stage-publish-pythonorg.yml
261255 parameters :
262256 BuildToPublish : ${{ parameters.BuildToPublish }}
257+ DoEmbed : ${{ parameters.DoEmbed }}
263258 IncludeGPG : ${{ parameters.DoGPG }}
264-
265259 - ${{ if eq(parameters.DoNuget, 'true') }} :
266260 - template : stage-publish-nugetorg.yml
267261 parameters :
268262 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