Skip to content
69 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

Merge Actions runs: summaries, attempts and re-runs, graceful cancel, log downloads, badges (actions 0009)1-- Runs as GitHub keeps them: every attempt with its own jobs and logs, a
2-- step's job summary ($GITHUB_STEP_SUMMARY), debug re-runs, and cancelling
3-- that lets a job clean up. See src/plan.rs (rerun, cancel_run, job_report)
4-- and src/views.rs (run, logs, summaries).
5
6-- A job's summary, a step at a time: the Markdown each step wrote to
7-- $GITHUB_STEP_SUMMARY, masked by the runner. Kept under the same id as the
8-- job's logs (a live job's, or an earlier attempt's: job_attempts.log_id).
9CREATE TABLE IF NOT EXISTS job_summaries (
10 job_id TEXT NOT NULL,
11 step INTEGER NOT NULL,
12 markdown TEXT NOT NULL,
13 PRIMARY KEY (job_id, step)
14);
15
16-- A run's earlier attempts: how each ended, and who started it.
17CREATE TABLE IF NOT EXISTS run_attempts (
18 run_id TEXT NOT NULL,
19 attempt INTEGER NOT NULL,
20 repo_id TEXT NOT NULL,
21 conclusion TEXT,
22 -- Who started this attempt: the run's actor for the first, whoever
23 -- re-ran it for the rest.
24 actor TEXT,
25 debug INTEGER NOT NULL DEFAULT 0,
26 started_at TEXT,
27 finished_at TEXT,
28 PRIMARY KEY (run_id, attempt)
29);
30
31-- Each job of an earlier attempt as it ended. `id` is the snapshot's own
32-- id, shown as the job's id when that attempt is viewed; `log_id` is where
33-- its logs and summary are kept: the snapshot's id once the job ran again,
34-- or the live job's while that one still carries the result (a job a
35-- "re-run failed jobs" left alone).
36CREATE TABLE IF NOT EXISTS job_attempts (
37 id TEXT PRIMARY KEY,
38 run_id TEXT NOT NULL,
39 repo_id TEXT NOT NULL,
40 attempt INTEGER NOT NULL,
41 job_id TEXT NOT NULL,
42 log_id TEXT NOT NULL,
43 key TEXT NOT NULL,
44 ordinal INTEGER NOT NULL DEFAULT 0,
45 name TEXT NOT NULL,
46 needs TEXT NOT NULL DEFAULT '[]',
47 status TEXT NOT NULL,
48 conclusion TEXT,
49 steps TEXT NOT NULL DEFAULT '[]',
50 annotations TEXT NOT NULL DEFAULT '[]',
51 reason TEXT,
52 environment TEXT,
53 labels TEXT,
54 runner_name TEXT,
55 started_at TEXT,
56 finished_at TEXT
57);
58CREATE INDEX IF NOT EXISTS job_attempts_by_run ON job_attempts (run_id, attempt);
59CREATE INDEX IF NOT EXISTS job_attempts_by_log ON job_attempts (log_id);
60
61-- Who started the current attempt (the run's actor until it is re-run),
62-- and whether it runs with debug logging.
63ALTER TABLE runs ADD COLUMN triggering_actor TEXT;
64ALTER TABLE runs ADD COLUMN debug INTEGER NOT NULL DEFAULT 0;
65
66-- Cancelling: a running job is told to stop and given time to run its
67-- `if: always()` and `cancelled()` steps and its post steps. Past the grace
68-- period it is stopped outright.
69ALTER TABLE jobs ADD COLUMN cancel_requested_at TEXT;

This file's history is long; its oldest lines are credited to the oldest commit read.