Server Deploy / deploy (push) Successful in 2m38s
Every push rebuilt all six images regardless of what it touched. A git diff against github.event.before now gates each build step. Two things this needs to work at all: fetch-depth 0, because the default shallow clone has a single commit and nothing to diff against, and git installed in the dind container, which had node and npm but not git. The path mapping follows the build contexts rather than intuition — the Go images use a root context and COPY shared/, so shared/ fans out to all three, while the Next images use their own directory and cannot be affected from outside it. Anything that leaves no trustworthy base commit — manual run, new branch, force-push whose old head is gone — lists every tracked file instead, so the fallback is one code path rather than two. Known gap, documented: a repo variable change pushes no commit, so nothing rebuilds. workflow_dispatch is the escape hatch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>