@@ -10,22 +10,35 @@ pools**. Each pool maps to a `[[runners]]` entry in the config file and
1010operates independently with its own executor type, concurrency level, and
1111GitHub API credentials.
1212
13- ```
14- ┌─────────────────────────────────────────────────┐
15- │ CLI (cobra) │
16- ├─────────────────────────────────────────────────┤
17- │ Runner Manager (1 per process) │
18- │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
19- │ │ Worker 1 │ │ Worker 2 │ │ Worker N │ ... │
20- │ │ (Job) │ │ (Idle) │ │ (Job) │ │
21- │ └──────────┘ └──────────┘ └──────────┘ │
22- ├─────────────────────────────────────────────────┤
23- │ Executor Layer │ Cache Layer │ Artifact │
24- │ (shell/docker/ │ (local/s3/ │ Manager │
25- │ k8s/firecracker)│ gcs) │ │
26- ├─────────────────────────────────────────────────┤
27- │ GitHub API Client │ Metrics │ Health │ Logger │
28- └─────────────────────────────────────────────────┘
13+ ``` mermaid
14+ flowchart TB
15+ CLI["CLI (cobra)"] --> Manager["Runner Manager (1 per process)"]
16+
17+ subgraph Pools["Runner pools (one per [[runners]] entry)"]
18+ W1["Worker 1 (job)"]
19+ W2["Worker 2 (idle)"]
20+ WN["Worker N (job)"]
21+ end
22+
23+ Manager --> Pools
24+
25+ subgraph Layers["Execution + services"]
26+ Executor["Executor layer<br/>shell / docker / kubernetes / firecracker"]
27+ Cache["Cache layer<br/>local / s3 / gcs"]
28+ Artifact["Artifact manager"]
29+ GitHubAPI["GitHub API client"]
30+ Metrics["Metrics"]
31+ Health["Health"]
32+ Logger["Logger"]
33+ end
34+
35+ Pools --> Executor
36+ Pools --> Cache
37+ Pools --> Artifact
38+ Manager --> GitHubAPI
39+ Manager --> Metrics
40+ Manager --> Health
41+ Manager --> Logger
2942```
3043
3144## Component diagram
@@ -203,23 +216,25 @@ If shutdown_timeout expires:
203216
204217## Data flow: job lifecycle
205218
206- ```
207- GitHub API Runner Executor
208- │ │ │
209- │◄── poll (GET /jobs) ──────│ │
210- │── job payload ───────────►│ │
211- │ │── Prepare() ─────────────────►│
212- │◄── status: in_progress ───│ │
213- │ │── Run(step 1) ───────────────►│
214- │◄── heartbeat ─────────────│ │
215- │◄── step status ───────────│◄── StepResult ────────────────│
216- │ │── Run(step 2) ───────────────►│
217- │◄── heartbeat ─────────────│ │
218- │◄── step status ───────────│◄── StepResult ────────────────│
219- │ │ │
220- │◄── status: completed ─────│ │
221- │ │── Cleanup() ─────────────────►│
222- │ │ │
219+ ``` mermaid
220+ sequenceDiagram
221+ participant GH as GitHub API
222+ participant R as Runner
223+ participant E as Executor
224+
225+ R->>GH: Poll jobs (GET /jobs)
226+ GH-->>R: Job payload
227+ R->>E: Prepare()
228+ R->>GH: Status in_progress
229+
230+ loop For each workflow step
231+ R->>E: Run(step)
232+ E-->>R: StepResult
233+ R->>GH: Step status + heartbeat
234+ end
235+
236+ R->>GH: Status completed
237+ R->>E: Cleanup()
223238```
224239
225240## Package dependency graph
0 commit comments