WIP: force check layers to execute via CHECK_EPOCH build arg
check / check (push) Successful in 1m14s

This commit is contained in:
clawbot
2026-09-03 20:36:04 +00:00
parent 5683d0f4ff
commit e14cf54ad9
2 changed files with 20 additions and 1 deletions
+14
View File
@@ -11,6 +11,14 @@ COPY . .
# Touch .pb.go so make does not try to regenerate via protoc (file is committed) # Touch .pb.go so make does not try to regenerate via protoc (file is committed)
RUN touch mfer/mf.pb.go RUN touch mfer/mf.pb.go
# Cache buster. script/cibuild passes a fresh CHECK_EPOCH on every invocation,
# which invalidates every layer below this line so the checks always really
# execute. Layers ABOVE it (base image, go mod download) keep their cache, so
# this costs nothing but the checks themselves. Every stage that runs a check
# needs its own copy: ARG is scoped per stage, and a stage without one silently
# serves a cached pass. See https://git.eeqj.de/sneak/mfer/issues/89.
ARG CHECK_EPOCH
# Go half of fmt-check only: this image has no node, so no prettier. The # Go half of fmt-check only: this image has no node, so no prettier. The
# markdown half runs in the mdfmt stage below. # markdown half runs in the mdfmt stage below.
RUN make fmt-check-go RUN make fmt-check-go
@@ -27,6 +35,9 @@ RUN yarn install --frozen-lockfile
COPY . . COPY . .
# Cache buster, so the check below always executes; see the lint stage.
ARG CHECK_EPOCH
# No make in this image; call the script entrypoint directly. # No make in this image; call the script entrypoint directly.
RUN script/prettier --check RUN script/prettier --check
@@ -47,6 +58,9 @@ COPY . .
# Touch .pb.go so make does not try to regenerate via protoc (file is committed) # Touch .pb.go so make does not try to regenerate via protoc (file is committed)
RUN touch mfer/mf.pb.go RUN touch mfer/mf.pb.go
# Cache buster, so the check below always executes; see the lint stage.
ARG CHECK_EPOCH
RUN make test RUN make test
RUN cd cmd/mfer && go build -tags urfave_cli_no_docs -o /mfer . RUN cd cmd/mfer && go build -tags urfave_cli_no_docs -o /mfer .
+6 -1
View File
@@ -6,9 +6,14 @@ set -eu
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
# A bare "docker build ." serves the check layers straight from the Docker
# layer cache when the tree has not changed, so the build exits 0 without ever
# running the checks. CHECK_EPOCH changes on every invocation and the
# Dockerfile declares it above the checks in every stage that runs one, which
# forces them to execute while leaving the dependency layers cached.
main() { main() {
cd "$ROOT" cd "$ROOT"
docker build . docker build --build-arg CHECK_EPOCH="$(date +%s)" .
} }
main "$@" main "$@"