Containers: release runner with docker access + restore runtime image smoke tests #26
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#26
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As an operator, I want the release pipeline to actually exercise the
published image end-to-end — verifying that
bun,git,forgejo-mcpand
claudeall run inside it, and that no credential files ship withit — so that a bad image cannot be tagged and pushed unnoticed.
Follow-up to #18 / PR #23: the PR CI for the Dockerfile had to be
downgraded to a daemonless static audit because this repo's
forgejo-runner (v12.8.2) strips
--privilegedfrom service containersand does not bind-mount
/var/run/docker.sockinto job containers. Thatis the right trade-off for PR runs (no broad docker privileges just to
check a pull request) but it leaves release.yml without the runtime
checks the original story called for.
Acceptance criteria
Runner
Option A: bind-mount
/var/run/docker.sockviacontainer.optionsin the runner
config.yml. Option B: run a privileged DinDservice successfully by patching forgejo-runner to pass through
options:. Option A is simpler; Option B is more isolated.release.ymljobs can pick it up(e.g.
runs-on: [docker, release]). PR CI must NOT land on it.README.mdor a dedicateddocs/runner-setup.md.release.yml — runtime verification after push
docker/build-push-action@v6pushes, pull thejust-published image by digest and run:
bun --versiongit --versionforgejo-mcp --helpclaude --versionFail the release if any command exits non-zero.
assert
/home/claude/.claude.json,/home/claude/.credentials.json,/home/claude/.config/claude-hooks,/root/.claude.json,/root/.credentials.jsondo not exist. Fail the release if anyfound.
rolled back (delete the tag from the registry or leave a clear
"do not use" marker on the release notes). Pick one and document.
PR CI
dockerfilejob inqa.ymlstays as-is. It alreadycatches hadolint issues and credential-leak patterns in the
Dockerfile source without needing a daemon.
Tests
v0.0.0-rc1)end-to-end before cutting the first real release.
Out of scope
(socket mount) proves unworkable.
runner needs QEMU emulation; defer until demand exists).
References
a0863b4documents thePR-time / release-time split)
(v12.8.2 behaviour)
Dependencies
milestone can progress without it in place
main