Reading release runs

Reading release runs

stado release status stado --json shows the recorded release runs, including each platform's builder, job ID, state, and failure. A recorded platform failure can describe a publisher read error rather than a failed worker; resumption checks the job and its build receipt before deciding whether another attempt is needed. A published platform can retain a failed job whose passing build receipt and archive were recovered; the qualification receipt records the successful build and the job record preserves the failed upload.

A product that release control holds no rollout policy for, and that no recorded run names, is answered from the release store: stado release status <product> prints published <product> <version> <platform> from <revision> per platform release the store holds, the revision read from that coordinate's own claim (source-revision.json; whose source revision could not be read: <cause> when it cannot be, and (claim only, no artifact written) beside a coordinate that holds its claim alone), and --json prints {targets: [], fleet: [], runs: [], published: [{product, version, platform, claimOnly, sourceRevision, unread}]}. Oko reads published as it reads published runs, so a release whose runs aged out still carries its commits. The same holds where registry.release_control is not configured at all. Only a product none of the three sources holds is refused (release control holds no rollout policy for "<product>"; …, or … the release store holds no release of it); a store that cannot be listed refuses with that refusal and the store's cause together.

Every saved run is also filed under its product (runs/release-pipeline-by-product/<product>/<run id>), so a question about one product's runs, such as stado release status tama or a delivery's check for the newest published run, reads only that product's run objects. Runs saved before the index existed are filed by the next stado release newest, which already reads every run once; until then a product question reads every run object and says so on stderr ([release runs] runs are not indexed by product yet …). The completion marker (runs/release-pipeline-by-product.complete) holds the newest run object time the index covers, and every product question first lists the run objects and files each one saved after that time, so a run saved by a host still on a Stado that writes no marker is listed for its product too; a marker written before it held a time covers what was saved before the marker was written. A run object that names no product or run id refuses the question with its path, and an unreadable marker time refuses it with the marker's words.

Source: this website