~psivaa/uci-engine/ppa-int-prod

« back to all changes in this revision

Viewing changes to docs/sequence.rst

  • Committer: Vincent Ladeuil
  • Author(s): ubuntu ci team et al.
  • Date: 2013-11-16 10:12:08 UTC
  • Revision ID: vila+ci@canonical.com-20131116101208-vw9kd9uobtgq8asa
Initial import from shared docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Diagram of different delivery cases
 
2
===================================
 
3
 
 
4
=============
 
5
Trunk landing
 
6
=============
 
7
 
 
8
**Case 1: delivering a ticket to trunk, (no pre-build package), success**
 
9
 
 
10
.. image:: images/diagram22.png
 
11
 
 
12
Note: in case of failure in any step, the Projects manager will comment on the MP and reject it.
 
13
 
 
14
If direct push to trunk -> only set an error on the component and don’t enable any other landing to it.
 
15
 
 
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
 
17
 
 
18
**Case 2: delivering a ticket to trunk, merge fail**
 
19
 
 
20
.. image:: images/diagram16.png
 
21
 
 
22
**Case 3: delivering a ticket to trunk, build fail**
 
23
 
 
24
.. image:: images/diagram15.png
 
25
 
 
26
**Case 4: delivering a ticket to trunk, tests fail**
 
27
 
 
28
.. image:: images/diagram17.png
 
29
 
 
30
**Case 5: delivering a ticket to trunk, blocked in UNAPPROVED/NEW**
 
31
 
 
32
.. image:: images/diagram18.png
 
33
 
 
34
**Case 6: delivering a ticket to trunk, blocked in proposed**
 
35
 
 
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.
 
37
 
 
38
*variant a: fix in the same component itself*
 
39
 
 
40
.. image:: images/diagram20.png
 
41
 
 
42
*variant b: fix outside the CI system: in another component or by a direct upload to that component*
 
43
 
 
44
.. image:: images/diagram23.png
 
45
 
 
46
Workflow I: direct MP: low-cost ticket
 
47
--------------------------------------
 
48
 
 
49
Reminder: this is the case of a quick bug fix/feature (< 2 commits). The main case is manual ticket landing.
 
50
 
 
51
**Workflow I A: direct commit to trunk or MP, all infos set**
 
52
 
 
53
.. image:: images/diagram11.png
 
54
 
 
55
**Workflow I B: direct MP, not following project rules (no commit message/enough approver**
 
56
 
 
57
.. image:: images/diagram12.png
 
58
 
 
59
Workflow II: opening a ticket
 
60
-----------------------------
 
61
 
 
62
Notes: ticket manager and landing manager shares most of their code. Only the order and some interface changes.
 
63
 
 
64
**Workflow II A: opening a ticket with multiple components**
 
65
 
 
66
.. image:: images/diagram.png
 
67
 
 
68
**Case 1**
 
69
 
 
70
| Title: Trunk delivery
 
71
| participant Projects manager
 
72
| participant Landing manager
 
73
| participant Branch/Source builder
 
74
| participant ppa assigner
 
75
| participant ppa
 
76
| participant Integration test runner
 
77
| participant archive
 
78
 
 
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
 
103
 
 
104
**Case 2**
 
105
 
 
106
| Title: Trunk delivery
 
107
| participant Projects manager
 
108
| participant Landing manager
 
109
| participant Branch/Source builder
 
110
| participant ppa assigner
 
111
| participant ppa
 
112
| participant Integration test runner
 
113
| participant archive
 
114
 
 
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
 
125
 
 
126
**Case 3**
 
127
 
 
128
| Title: Trunk delivery
 
129
| participant Projects manager
 
130
| participant Landing manager
 
131
| participant Branch/Source builder
 
132
| participant ppa assigner
 
133
| participant ppa
 
134
| participant Integration test runner
 
135
| participant archive
 
136
 
 
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
 
151
 
 
152
**Case 4**
 
153
 
 
154
| Title: Trunk delivery
 
155
| participant Projects manager
 
156
| participant Landing manager
 
157
| participant Branch/Source builder
 
158
| participant ppa assigner
 
159
| participant ppa
 
160
| participant Integration test runner
 
161
| participant archive
 
162
 
 
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
 
182
 
 
183
**Case 5**
 
184
 
 
185
| Title: Trunk delivery
 
186
| participant Projects manager
 
187
| participant Landing manager
 
188
| participant Branch/Source builder
 
189
| participant ppa assigner
 
190
| participant ppa
 
191
| participant Integration test runner
 
192
| participant archive
 
193
 
 
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
 
222
 
 
223
**Case 6**
 
224
 
 
225
*variant a*
 
226
 
 
227
| Title: Trunk delivery
 
228
| participant Projects manager
 
229
| participant Landing manager
 
230
| participant Branch/Source builder
 
231
| participant ppa assigner
 
232
| participant ppa
 
233
| participant Integration test runner
 
234
| participant archive
 
235
 
 
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
 
280
 
 
281
*variant b*
 
282
 
 
283
| Title: Trunk delivery
 
284
| participant Projects manager
 
285
| participant Landing manager
 
286
| participant Branch/Source builder
 
287
| participant ppa assigner
 
288
| participant ppa
 
289
| participant Integration test runner
 
290
| participant archive
 
291
 
 
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
 
320
 
 
321
**Workflow I A**
 
322
 
 
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
 
328
 
 
329
| Projects manager->Branch listener: Assign branch responsability and rules (like 2 approvers)
 
330
 
 
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
 
340
 
 
341
 
 
342
 
 
343
**Workflow I B**
 
344
 
 
345
| Title: Direct failing MP to trunk
 
346
| participant Projects manager
 
347
| participant Branch listener
 
348
| participant launchpad MP API
 
349
 
 
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
 
355
 
 
356
 
 
357
**Workflow II A**
 
358
 
 
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
 
369
 
 
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
 
393
 
 
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
 
404
 
 
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
 
416
 
 
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