ci: build the image on pull requests #142
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!142
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/pr-image-build"
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?
Closes #91 and #129: the image now builds on every pull request, verified against real logs.
Forgejo 16 serves the Actions log endpoints that returned 404 before, which is what made this diagnosable at all.
What the historic failure was
Run 17155, job 26996, the one #91 could not read:
#91 hypothesis 1 was right that the job container never saw a usable DOCKER_HOST, and hypothesis 2 would not have worked as written. The runner container has DOCKER_HOST=tcp://localhost:2375, but that is its own loopback and a job container has a different one. A probe confirmed: agentic-os:release carries a docker client at 28.5.2, no socket is mounted, DOCKER_HOST is unset, and the daemon answers on the job container default gateway because dockerd listens on 0.0.0.0:2375 in the runner pod.
What landed
scripts/ci-image-build.sh derives the daemon address from /proc/net/route, falls back to the historic bridge and the socket, and verifies each candidate with a version call before use. No push, no registry credential, and the deploy runner stays the only publisher.
First run on this pull request:
building against tcp://172.18.0.1:2375, all 35 Dockerfile steps including the compose stage clone,image build succeeded. The derived address was used, not the hardcoded fallback.Proof it catches a fault
Reproduced the first of the two faults #129 describes, an input present in the repository but missing from the stage, by removing the compose stage COPY of the expander binary.
Run locally against the same Dockerfile and reverted. The two checks are complementary rather than overlapping.
The probe is kept as a failure-only diagnostic step, so the next red run reports what it can see without needing a commit to ask.