Skip to main content

max / makenotwork

1.8 KB · 51 lines History Blame Raw
1 -- Bento run history. Three nested tables mirror the App x Target x Step model:
2 -- a build fans out to per-target runs, each of which walks the step sequence.
3
4 CREATE TABLE builds (
5 id INTEGER PRIMARY KEY AUTOINCREMENT,
6 app TEXT NOT NULL,
7 version TEXT NOT NULL,
8 status TEXT NOT NULL, -- pending | running | ok | failed
9 created_at TEXT NOT NULL,
10 finished_at TEXT
11 );
12
13 CREATE TABLE target_runs (
14 id INTEGER PRIMARY KEY AUTOINCREMENT,
15 build_id INTEGER NOT NULL REFERENCES builds(id) ON DELETE CASCADE,
16 app TEXT NOT NULL,
17 version TEXT NOT NULL,
18 target TEXT NOT NULL, -- "platform/arch"
19 status TEXT NOT NULL, -- pending | running | ok | failed
20 current_step TEXT, -- step name while running
21 error TEXT,
22 started_at TEXT NOT NULL,
23 finished_at TEXT
24 );
25
26 CREATE INDEX target_runs_build ON target_runs(build_id);
27
28 CREATE TABLE step_runs (
29 id INTEGER PRIMARY KEY AUTOINCREMENT,
30 target_run_id INTEGER NOT NULL REFERENCES target_runs(id) ON DELETE CASCADE,
31 step TEXT NOT NULL, -- canonical Step name
32 status TEXT NOT NULL, -- running | ok | failed
33 log_ref TEXT, -- path under logs_root
34 started_at TEXT NOT NULL,
35 finished_at TEXT
36 );
37
38 CREATE INDEX step_runs_target ON step_runs(target_run_id);
39
40 -- Published releases, for publish idempotency + version-monotonicity guards.
41 CREATE TABLE releases (
42 id INTEGER PRIMARY KEY AUTOINCREMENT,
43 app TEXT NOT NULL,
44 target TEXT NOT NULL,
45 version TEXT NOT NULL,
46 channel TEXT NOT NULL,
47 artifact_hash TEXT,
48 published_at TEXT NOT NULL,
49 UNIQUE(app, target, channel, version)
50 );
51