ci: stop disk reclaim from deleting a smoke image mid-test
v1.12.2 run 740: build-variant's `docker system prune -af --volumes` untagged pi-devbox:smoke-studio 30 ms after smoke-studio loaded it, so every studio assertion failed and the -studio tags were not published. All jobs share the runner's Docker daemon, and a smoke image is unused between smoke-test.sh's one-shot `docker run`s. - scripts/ci-reclaim-docker.sh: the same reclaim, per object type, but never prunes an image labelled se.jordbo.pi-devbox.ci-smoke-image; labelled orphans are swept after 6h. `assert-protected IMG` is the smoke preflight; `lint WORKFLOW...` rejects raw system/image prunes. - smoke jobs: label their image, assert it, tag it per run (pi-devbox:smoke[-studio]-<run_id>), remove it in an always() step. - all five reclaim sites call the script; lint.yml runs the guard. - Job order unchanged: studio jobs still gate only the -studio tags. Verified on an isolated docker:29-dind (old prune deletes a labelled image; new reclaim keeps it, removes unlabelled + 1970-created labelled images, spares an in-use image, no errors); actionlint, shellcheck, lint-shell, check-workflow-shell, check-doc-drift all clean.
This commit is contained in:
@@ -45,6 +45,13 @@ re-brand of opencode-devbox's `pi-only` variant.
|
||||
update-description). The `-studio` variant adds independent
|
||||
`smoke-studio` + `build-variant-studio` jobs that gate only the
|
||||
`-studio` tags (never the core `:latest` release).
|
||||
- `scripts/ci-reclaim-docker.sh` — the ONLY way a CI job frees disk. All jobs
|
||||
share the runner's Docker daemon, so a bare `docker system prune -a` in one
|
||||
job deletes the smoke image another job is mid-test on (v1.12.2 run 740 lost
|
||||
its `-studio` tags that way). The script spares images labelled
|
||||
`se.jordbo.pi-devbox.ci-smoke-image`; the smoke jobs apply that label,
|
||||
assert it (`assert-protected`) and remove their own image at the end.
|
||||
`lint.yml` fails on any raw `docker system|image prune` in a workflow.
|
||||
|
||||
## Versioning scheme
|
||||
|
||||
|
||||
Reference in New Issue
Block a user