1
Diagram of different delivery cases
2
===================================
8
**Case 1: delivering a ticket to trunk, (no pre-build package), success**
10
.. image:: images/diagram22.png
12
Note: in case of failure in any step, the Projects manager will comment on the MP and reject it.
14
If direct push to trunk -> only set an error on the component and don’t enable any other landing to it.
16
Note 2: while monitoring the ppa or tests, we still can get signal from Projects manager to Landing manager telling “ignore this arch” or “ignore this step”. This impacts the landing manager on its view and can unblock/bypass some steps
18
**Case 2: delivering a ticket to trunk, merge fail**
20
.. image:: images/diagram16.png
22
**Case 3: delivering a ticket to trunk, build fail**
24
.. image:: images/diagram15.png
26
**Case 4: delivering a ticket to trunk, tests fail**
28
.. image:: images/diagram17.png
30
**Case 5: delivering a ticket to trunk, blocked in UNAPPROVED/NEW**
32
.. image:: images/diagram18.png
34
**Case 6: delivering a ticket to trunk, blocked in proposed**
36
Note: the package is in the archive at this moment. There is no way to backout the change, so the merge needs to go in one way or another. As the component is blocked in proposed, there is no advantage of unblocking the queue as blocked in proposed means that further unrelated landings will still be blocked in proposed. It will continue blocking potentially other unrelated packages (if a transition happens). The only way then is to unblock the package.
38
*variant a: fix in the same component itself*
40
.. image:: images/diagram20.png
42
*variant b: fix outside the CI system: in another component or by a direct upload to that component*
44
.. image:: images/diagram23.png
46
Workflow I: direct MP: low-cost ticket
47
--------------------------------------
49
Reminder: this is the case of a quick bug fix/feature (< 2 commits). The main case is manual ticket landing.
51
**Workflow I A: direct commit to trunk or MP, all infos set**
53
.. image:: images/diagram11.png
55
**Workflow I B: direct MP, not following project rules (no commit message/enough approver**
57
.. image:: images/diagram12.png
59
Workflow II: opening a ticket
60
-----------------------------
62
Notes: ticket manager and landing manager shares most of their code. Only the order and some interface changes.
64
**Workflow II A: opening a ticket with multiple components**
66
.. image:: images/diagram.png
70
| Title: Trunk delivery
71
| participant Projects manager
72
| participant Landing manager
73
| participant Branch/Source builder
74
| participant ppa assigner
76
| participant Integration test runner
79
| Note over Projects manager: new ticket in the queue
80
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
81
| Landing manager->ppa assigner:ask for a clean available ppa
82
| ppa assigner->Landing manager: give ppa infos
83
| Landing manager->Branch/Source builder: send branch and ppa infos
84
| Note over Branch/Source builder: prepare source package
85
| Branch/Source builder->ppa:push source
86
| Branch/Source builder->Landing manager: give prepared branch and version infos
87
| Landing manager->Projects manager:update status
88
| Projects manager->Landing manager:get possible overrides
89
| Landing manager-->ppa: monitoring build state
90
| Note over Landing manager:report of successful build
91
| Landing manager->Projects manager: update status
92
| Projects manager->Landing manager:get possible overrides
93
| Landing manager->Integration test runner: test against latest proposed image
94
| Integration test runner->Landing manager: results
95
| Landing manager->Projects manager: update status
96
| Projects manager->Landing manager:get possible overrides
97
| Landing manager-->archive: copy source from ppa to archive and monitor the transition
98
| Note over Landing manager: Push merged branch
99
| Note right of Landing manager: MP is going to be closed
100
| Landing manager->ppa assigner: deprovision that ppa
101
| Landing manager->Projects manager: update final status
102
| Note over Projects manager: ticket closed and removed from queue
106
| Title: Trunk delivery
107
| participant Projects manager
108
| participant Landing manager
109
| participant Branch/Source builder
110
| participant ppa assigner
112
| participant Integration test runner
113
| participant archive
115
| Note over Projects manager: new ticket in the queue
116
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
117
| Landing manager->ppa assigner:ask for a clean available ppa
118
| ppa assigner->Landing manager: give ppa infos
119
| Landing manager->Branch/Source builder: send branch and ppa infos
120
| Note over Branch/Source builder: prepare source package can't merge to trunk
121
| Branch/Source builder->Landing manager: report failure
122
| Landing manager->ppa assigner: deprovision that ppa
123
| Landing manager->Projects manager:update failure
124
| Note over Projects manager: ticket removed from the queue
128
| Title: Trunk delivery
129
| participant Projects manager
130
| participant Landing manager
131
| participant Branch/Source builder
132
| participant ppa assigner
134
| participant Integration test runner
135
| participant archive
137
| Note over Projects manager: new ticket in the queue
138
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
139
| Landing manager->ppa assigner:ask for a clean available ppa
140
| ppa assigner->Landing manager: give ppa infos
141
| Landing manager->Branch/Source builder: send branch and ppa infos
142
| Note over Branch/Source builder: prepare source package
143
| Branch/Source builder->ppa:push source
144
| Branch/Source builder->Landing manager: give prepared branch and version infos
145
| Landing manager->Projects manager:update status
146
| Projects manager->Landing manager:get possible overrides
147
| Landing manager-->ppa: monitoring build state and FAILED
148
| Landing manager->ppa assigner: deprovision that ppa
149
| Landing manager->Projects manager: update failure
150
| Note over Projects manager: ticket removed from the queue
154
| Title: Trunk delivery
155
| participant Projects manager
156
| participant Landing manager
157
| participant Branch/Source builder
158
| participant ppa assigner
160
| participant Integration test runner
161
| participant archive
163
| Note over Projects manager: new ticket in the queue
164
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
165
| Landing manager->ppa assigner:ask for a clean available ppa
166
| ppa assigner->Landing manager: give ppa infos
167
| Landing manager->Branch/Source builder: send branch and ppa infos
168
| Note over Branch/Source builder: prepare source package
169
| Branch/Source builder->ppa:push source
170
| Branch/Source builder->Landing manager: give prepared branch and version infos
171
| Landing manager->Projects manager:update status
172
| Projects manager->Landing manager:get possible overrides
173
| Landing manager-->ppa: monitoring build state
174
| Note over Landing manager:report of successful build
175
| Landing manager->Projects manager: update status
176
| Projects manager->Landing manager:get possible overrides
177
| Landing manager->Integration test runner: test against latest proposed image and FAILED
178
| Integration test runner->Landing manager: failure results
179
| Landing manager->ppa assigner: deprovision that ppa
180
| Landing manager->Projects manager: update failure
181
| Note over Projects manager: ticket removed from the queue
185
| Title: Trunk delivery
186
| participant Projects manager
187
| participant Landing manager
188
| participant Branch/Source builder
189
| participant ppa assigner
191
| participant Integration test runner
192
| participant archive
194
| Note over Projects manager: new ticket in the queue
195
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
196
| Landing manager->ppa assigner:ask for a clean available ppa
197
| ppa assigner->Landing manager: give ppa infos
198
| Landing manager->Branch/Source builder: send branch and ppa infos
199
| Note over Branch/Source builder: prepare source package
200
| Branch/Source builder->ppa:push source
201
| Branch/Source builder->Landing manager: give prepared branch and version infos
202
| Landing manager->Projects manager:update status
203
| Projects manager->Landing manager:get possible overrides
204
| Landing manager-->ppa: monitoring build state
205
| Note over Landing manager:report of successful build
206
| Landing manager->Projects manager: update status
207
| Projects manager->Landing manager:get possible overrides
208
| Landing manager->Integration test runner: test against latest proposed image
209
| Integration test runner->Landing manager: results
210
| Landing manager->Projects manager: update status
211
| Projects manager->Landing manager:get possible overrides
212
| Landing manager-->archive: copy source from ppa to archive and monitor the transition
213
| Landing manager->archive: seeing it's in NEW/UNAPPROVED
214
| Landing manager->Projects manager: update status
215
| Note left of Landing manager: no-one looking at the NEW/UNAPPROVED package
216
| Note over Landing manager: warning for anormal wait
217
| Landing manager->Projects manager: update arnomal wait
218
| Note left of Landing manager: if package rejected -> reject ticket
219
| Landing manager->ppa assigner: deprovision that ppa
220
| Landing manager->Projects manager: update failure to land
221
| Note over Projects manager: ticket removed from the queue
227
| Title: Trunk delivery
228
| participant Projects manager
229
| participant Landing manager
230
| participant Branch/Source builder
231
| participant ppa assigner
233
| participant Integration test runner
234
| participant archive
236
| Note over Projects manager: new ticket in the queue
237
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
238
| Landing manager->ppa assigner:ask for a clean available ppa
239
| ppa assigner->Landing manager: give ppa infos
240
| Landing manager->Branch/Source builder: send branch and ppa infos
241
| Note over Branch/Source builder: prepare source package
242
| Branch/Source builder->ppa:push source
243
| Branch/Source builder->Landing manager: give prepared branch and version infos
244
| Landing manager->Projects manager:update status
245
| Projects manager->Landing manager:get possible overrides
246
| Landing manager-->ppa: monitoring build state
247
| Note over Landing manager:report of successful build
248
| Landing manager->Projects manager: update status
249
| Projects manager->Landing manager:get possible overrides
250
| Landing manager->Integration test runner: test against latest proposed image
251
| Integration test runner->Landing manager: results
252
| Landing manager->Projects manager: update status
253
| Projects manager->Landing manager:get possible overrides
254
| Landing manager-->archive: copy source from ppa to archive and monitor the transition
255
| Landing manager->Projects manager: update status
256
| Note over Landing manager: warning for anormal wait
257
| Landing manager->Projects manager: update arnomal wait
258
| Note right of Projects manager: ticket updated with a new commit in a MP or direct push to trunk
259
| Projects manager->Landing manager: new req. for component X
260
| Landing manager->Branch/Source builder: send branch and ppa infos
261
| Note over Branch/Source builder: prepare source package
262
| Branch/Source builder->ppa:push source
263
| Branch/Source builder->Landing manager: give prepared branch and version infos
264
| Landing manager->Projects manager:update status
265
| Projects manager->Landing manager:get possible overrides
266
| Landing manager-->ppa: monitoring build state
267
| Note over Landing manager:report of successful build
268
| Landing manager->Projects manager: update status
269
| Projects manager->Landing manager:get possible overrides
270
| Landing manager->Integration test runner: test against latest proposed image
271
| Integration test runner->Landing manager: results
272
| Landing manager->Projects manager: update status
273
| Projects manager->Landing manager:get possible overrides
274
| Landing manager-->archive: copy source from ppa to archive and monitor the transition
275
| Note over Landing manager: Push merged branch
276
| Note right of Landing manager: MP is going to be closed
277
| Landing manager->ppa assigner: deprovision that ppa
278
| Landing manager->Projects manager: update final status
279
| Note over Projects manager: ticket closed and removed from queue
283
| Title: Trunk delivery
284
| participant Projects manager
285
| participant Landing manager
286
| participant Branch/Source builder
287
| participant ppa assigner
289
| participant Integration test runner
290
| participant archive
292
| Note over Projects manager: new ticket in the queue
293
| Projects manager->Landing manager: Assign branch responsability get metadata (like integration tests to run)
294
| Landing manager->ppa assigner:ask for a clean available ppa
295
| ppa assigner->Landing manager: give ppa infos
296
| Landing manager->Branch/Source builder: send branch and ppa infos
297
| Note over Branch/Source builder: prepare source package
298
| Branch/Source builder->ppa:push source
299
| Branch/Source builder->Landing manager: give prepared branch and version infos
300
| Landing manager->Projects manager:update status
301
| Projects manager->Landing manager:get possible overrides
302
| Landing manager-->ppa: monitoring build state
303
| Note over Landing manager:report of successful build
304
| Landing manager->Projects manager: update status
305
| Projects manager->Landing manager:get possible overrides
306
| Landing manager->Integration test runner: test against latest proposed image
307
| Integration test runner->Landing manager: results
308
| Landing manager->Projects manager: update status
309
| Projects manager->Landing manager:get possible overrides
310
| Landing manager-->archive: copy source from ppa to archive and monitor the transition
311
| Landing manager->Projects manager: update status
312
| Note over Landing manager: warning for anormal wait
313
| Landing manager->Projects manager: update arnomal wait
314
| Note over Landing manager: migration finally happened or newer | version in the archive (direct upload)
315
| Note over Landing manager: Push merged branch
316
| Note right of Landing manager: MP is going to be closed
317
| Landing manager->ppa assigner: deprovision that ppa
318
| Landing manager->Projects manager: update final status
319
| Note over Projects manager: ticket closed and removed from queue
323
| Title: Direct MP or commit to trunk
324
| participant Projects manager
325
| participant Branch listener
326
| participant launchpad MP API
327
| participant launchpad bugs API
329
| Projects manager->Branch listener: Assign branch responsability and rules (like 2 approvers)
331
| Note left of Branch listener:CASE OF DIRECT PUSH TO TRUNK
332
| Branch listener->Branch listener: get infos from unreleased commit message, and eventual bug reports mentioned/attached
333
| Note left of Branch listener:CASE OF MP
334
| Branch listener->launchpad MP API: pool for existing top approved MP
335
| launchpad MP API->Branch listener: grab MP infos and possible attached bugs
336
| Note left of Branch listener:END CASES
337
| Branch listener->launchpad bugs API: grab bugs infos (like title)
338
| launchpad bugs API->Branch listener: get those infos
339
| Branch listener->Projects manager: open a new low-cost ticket on the component associated
345
| Title: Direct failing MP to trunk
346
| participant Projects manager
347
| participant Branch listener
348
| participant launchpad MP API
350
| Projects manager->Branch listener: Assign branch responsability and rules (like 2 approvers)
351
| Branch listener->launchpad MP API: pool for existing top approved MP
352
| launchpad MP API->Branch listener: grab MP infos and possible attached bugs
353
| Note left of Branch listener: check that MP didn't follow the rules
354
| Branch listener->launchpad MP API:comment and set back to needs review
359
| Title: Ticket handling
360
| participant Projects manager
361
| participant Branch listener
362
| participant ppa assigner
363
| participant Ticket manager
364
| participant Branch/Source builder (branch)
365
| participant Branch/Source builder (trunk + branch)
366
| participant ppa (branch)
367
| participant ppa (trunk + branch)
368
| participant Integration test runner
370
| Note over Projects manager: new ticket opened, specifying components
371
| Projects manager->Ticket manager: Assign branch responsibility get metadata (like integration tests to run)
372
| Note over Ticket manager: create branches (if not existing)
373
| Ticket manager->ppa assigner:ask for two clean available ppas
374
| ppa assigner->Ticket manager: give ppas infos
375
| Ticket manager->Branch listener: Set up branches to watch
376
| Ticket manager->Projects manager:update status
377
| Note left of Ticket manager: REPEAT ON ALL REQUESTS
378
| Note over Branch listener: See workflow I A: see other diagram same apply but on diverged branch
379
| Branch listener->Ticket manager: send incoming request
380
| Ticket manager->Branch/Source builder (branch): send branch info
381
| Note over Branch/Source builder (branch): prepare source package
382
| Branch/Source builder (branch)->ppa (branch):push source
383
| Branch/Source builder (branch)->Ticket manager: give ack back
384
| Ticket manager->Projects manager:update status
385
| Projects manager->Ticket manager:get possible overrides
386
| Ticket manager-->ppa (branch): monitoring build state
387
| Note over Ticket manager:report of successful build
388
| Ticket manager->Projects manager: update status
389
| Projects manager->Ticket manager:get possible overrides
390
| Note over Ticket manager: Push merged branch
391
| Note right of Ticket manager: MP is going to be closed
392
| Note left of Ticket manager: END REPEAT
394
| Note left of Ticket manager: (in parallel for all requests)
395
| Ticket manager->Branch/Source builder (trunk + branch): send branch info
396
| Note over Branch/Source builder (trunk + branch): prepare source package (merged with trunk)
397
| Branch/Source builder (trunk + branch)->ppa (trunk + branch):push source
398
| Branch/Source builder (trunk + branch)->Ticket manager: give ack back
399
| Ticket manager->Projects manager:update status
400
| Ticket manager-->ppa (trunk + branch): monitoring build state
401
| Note over Ticket manager:report of successful build
402
| Ticket manager->Projects manager: update status
403
| Note left of Ticket manager: END REPEAT
405
| Note over Ticket manager: EVERYTIME NOTHING IS BUILDING AND: * A NEW COMPONENT LANDED * OR A NEW AVAILABLE IMAGE * OR PROJECTS MANAGER CONFIG CHANGED IMAGE#
406
| Ticket manager->Image builder: send request for a new image
407
| Image builder-->ppa (branch): build IMAGE A (branch with fixed image num)
408
| Image builder-->ppa (branch): build IMAGE B (branch with latest image if different num)
409
| Image builder-->ppa (trunk + branch): build IMAGE C (trunk merged with latest image num)
410
| Image builder->Ticket manager: report and publish isos
411
| Ticket manager->Projects manager: push infos
412
| Ticket manager->Integration test runner: test against available images
413
| Integration test runner->Ticket manager: results
414
| Ticket manager->Projects manager: update status
415
| Note left of Ticket manager: END TESTING
417
| Ticket manager->Projects manager: request for more additional constraints (design review, packaging changes)
418
| Projects manager->Ticket manager: additional ack by release team or design or core-dev
419
| Note over Ticket manager: LANDING button only available if IMAGE 3 built, req. fulfill and tests pass Then go to landing manager case.
420
| Ticket manager->ppa assigner: deprovision the (branch) ppa