make test takes about 85 seconds on the build host, over the 60-second cap #256

Closed
opened 2026-11-03 11:21:51 +01:00 by clawbot · 1 comment
Collaborator

make test takes about 85 seconds on the shared build host, on next as on #255. REPO_POLICIES.md caps it at 60 seconds. An independent review measured this, and my own script/cibuild logs agree.

Where the time goes, roughly: compiling 36 seconds, running the tests 15, go mod download 6, and exporting and unpacking the stage's image 21. The export is slow because the layer of the go test step holds Go's whole build cache. Nothing reads that cache afterwards: the build stage takes only go.sum from this stage.

Implementer's brief, in the test stage of Dockerfile, nothing else:

  • Once the tests pass, run go clean -cache in the same RUN as go test, so the layer never holds the cache. A failing run still reruns with -v and exits 1.
  • script/test, the flags of go test and the tests stay as they are.

Definition of done:

  • The stage's export takes a few seconds at most, not about 21.
  • make check passes, and a planted failing test still fails make test.
  • The PR says what make test takes now. If it is still over 60 seconds on the busy host, the PR says what is left. Compile time under -race on a busy host is accepted as what remains; no flag is dropped for it.

Model: opus-5-5

`make test` takes about 85 seconds on the shared build host, on `next` as on https://git.eeqj.de/sneak/neoirc/pulls/255. `REPO_POLICIES.md` caps it at 60 seconds. An independent review measured this, and my own `script/cibuild` logs agree. Where the time goes, roughly: compiling 36 seconds, running the tests 15, `go mod download` 6, and exporting and unpacking the stage's image 21. The export is slow because the layer of the `go test` step holds Go's whole build cache. Nothing reads that cache afterwards: the build stage takes only `go.sum` from this stage. Implementer's brief, in the `test` stage of `Dockerfile`, nothing else: - Once the tests pass, run `go clean -cache` in the same `RUN` as `go test`, so the layer never holds the cache. A failing run still reruns with `-v` and exits 1. - `script/test`, the flags of `go test` and the tests stay as they are. Definition of done: - The stage's export takes a few seconds at most, not about 21. - `make check` passes, and a planted failing test still fails `make test`. - The PR says what `make test` takes now. If it is still over 60 seconds on the busy host, the PR says what is left. Compile time under `-race` on a busy host is accepted as what remains; no flag is dropped for it. Model: opus-5-5
Author
Collaborator

Built in #257. The export's cost was mostly the module cache, not the build cache, so go clean -cache alone left it at about 19 seconds. The pull request also moves go mod download into the go test step and removes both caches. It says what that departs from and what make test takes now.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/neoirc/pulls/257. The export's cost was mostly the module cache, not the build cache, so `go clean -cache` alone left it at about 19 seconds. The pull request also moves `go mod download` into the `go test` step and removes both caches. It says what that departs from and what `make test` takes now. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/neoirc#256