| # Overview |
| |
| This is an overview of how Skia is built and tested and the relationships |
| between the various services we use. |
| |
| ## Life of a +1 |
| |
| What happens when a user submits a CL to the Commit Queue (CQ): |
| |
| <details> |
| <summary> |
| <object type="image/svg+xml" data="https://dot.skia.org/dot?lifeof"></object> |
| </summary> |
| <pre> |
| digraph { |
| rankdir=LR; |
| node [shape = box, fixedsize = true, width=2, height=0.6]; |
| |
| IN, OUT [style = invis]; |
| |
| // The top level input and output flows, a +2 goes in and eventually an email is sent |
| // on success or failure. |
| IN -> Gerrit [ label="+2" ]; |
| Gerrit -> OUT [ label="email" ]; |
| |
| // Requests flowing down to Swarming to do the building, testing, and uploading. |
| Gerrit -> CQ [ label="CL (poll)" ]; |
| LUCIConfig -> CQ [ label="TryJobs\n(poll)" ]; |
| CQ -> BuildBucket [ label="create(CL, TryJob)\n(API)" ]; |
| BuildBucket -> TaskScheduler [ label="CL+TryJob\n(poll)" ]; |
| TaskScheduler -> Swarming [ label="TaskInfo\nCIPD List + Isolate List" ]; |
| TaskScheduler -> Isolate [ label="HEAD+CL" ]; |
| CIPD -> Swarming [ label="(pull)" ]; |
| Isolate -> Swarming [ label="(pull)" ]; |
| |
| // Propagating the signal that the job is done. |
| Swarming -> TaskScheduler [ label="TaskResult\nPubSub+poll", style=dotted ]; |
| TaskScheduler -> BuildBucket [ label="Done", style=dotted ]; |
| BuildBucket -> CQ [ label="Done", style=dotted ]; |
| CQ -> Gerrit [ label="Done", style=dotted ]; |
| } |
| |
| </pre> |
| </details> |