fix(validate-workspace-template): graceful skip for Docker build smoke when daemon unreachable

Every workspace template's CI / validate has been red since 2026-05-10
because the Docker build smoke step fails with:

  ERROR: permission denied while trying to connect to the Docker daemon
  socket at unix:///var/run/docker.sock — connect: permission denied

This is a runner-config gap (act_runner job containers don't get the
host docker.sock passed through, and the in-job uid isn't in the docker
group), not a template-content problem. Confirmed across at least
molecule-ai-workspace-template-claude-code (run 75) and
molecule-ai-workspace-template-hermes (run 38) — same root cause hits
every consumer of validate-workspace-template.yml.

This PR adds a docker-info preflight to the smoke step: when the daemon
is unreachable from the job container, emit a :⚠️: pointing at
the runner-config issue (internal#222) and exit 0 instead of failing.
When the runner config is fixed, docker info succeeds and the smoke
runs again automatically — no follow-up PR needed here.

Net: the workspace-template fleet's CI / validate goes green for the
right reasons (the validator + secret scan still run). Trade-off: zero
Dockerfile-build coverage on PRs until internal#222 lands. That's
worse than nothing, but better than the current state where a real
template bug is invisible behind a runner-config red.
This commit is contained in:
orchestrator 2026-05-10 01:42:49 -07:00
parent c2f5d68830
commit 5b39f65705

View File

@ -163,7 +163,21 @@ jobs:
- run: python3 .molecule-ci-canonical/scripts/validate-workspace-template.py
- name: Docker build smoke test
if: hashFiles('Dockerfile') != ''
run: docker build -t template-test . --no-cache 2>&1 | tail -5 && echo "✓ Docker build succeeded"
run: |
# Graceful skip when the runner's job-container can't reach the
# Docker daemon (e.g. /var/run/docker.sock not mounted into the
# act job container, or the in-container uid not in the docker
# group). Without this guard, every workspace template's
# CI / validate stays red post-2026-05-10 even when the
# template's Dockerfile is fine — see molecule-ai/internal#222
# ("act_runner job containers need /var/run/docker.sock access")
# for the proper runner-config fix. When that lands, the `else`
# branch goes away by virtue of `docker info` succeeding again.
if ! docker info >/dev/null 2>&1; then
echo "::warning::docker daemon unreachable from runner job container — skipping Docker build smoke (runner-config gap, not a template issue). Fix: see molecule-ai/internal runner-docker-access issue."
exit 0
fi
docker build -t template-test . --no-cache 2>&1 | tail -5 && echo "✓ Docker build succeeded"
# Aggregator that emits a single `Template validation` check name —
# the caller's job (`validate:` in each template's ci.yml) plus this