Keep in-repo agent scratch out of the build context and out of git (closes #27)
The canonical .dockerignore and .gitignore both omitted the in-repo agent scratch directory, which holds one worktree per in-flight agent, so under `COPY . .` an entire extra checkout of the repo reached the image. The two entries are deliberately different shapes: anchored in .dockerignore, where the `**/` form would also delete a legitimately named nested directory, and unanchored in .gitignore, where a pattern already matches at every depth. Anchoring leaves a gap where agents run in subdirectories, stated in the vendored file itself. The second half is the consequence of excluding .git: `git describe` in a build stage yields an empty version without erroring, so the version is now computed on the host and passed in. Model: opus-5
This commit is contained in:
1 parent
c3a504f647
commit
7b55c444ae
11 files changed
+140
-20
No files matched your search
@@ -49,7 +49,14 @@ last_modified: 2026-09-08
|
||||
```
|
||||
|
||||
```make
|
||||
VERSION := $(shell git describe --always --dirty)
|
||||
# ?= rather than := because this `$(shell git describe ...)` is only
|
||||
# correct on the host: `.dockerignore` excludes `.git`, so evaluated
|
||||
# inside a build stage it expands to the empty string without failing
|
||||
# and the binary reports no version. The version is computed on the
|
||||
# host by `script/docker` / `script/cibuild` and passed with
|
||||
# `--build-arg VERSION=...`; where a build stage invokes make,
|
||||
# `ARG VERSION` puts it in the environment and `?=` defers to it.
|
||||
VERSION ?= $(shell git describe --always --dirty)
|
||||
BUILDARCH := $(shell uname -m)
|
||||
|
||||
GOLDFLAGS += -X main.Version=$(VERSION)
|
||||
|
||||
Reference in new issue
Block a user