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,6 +1,6 @@
|
||||
---
|
||||
title: Go HTTP Server Conventions
|
||||
last_modified: 2026-02-22
|
||||
last_modified: 2026-09-08
|
||||
---
|
||||
|
||||
This document defines the architectural patterns, design decisions, and
|
||||
@@ -991,7 +991,14 @@ func main() {
|
||||
Use ldflags to inject version information at build time:
|
||||
|
||||
```makefile
|
||||
VERSION := $(shell git describe --tags --always)
|
||||
# ?= 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 the build
|
||||
# stage invokes make, `ARG VERSION` puts it in the environment and `?=` defers
|
||||
# to it.
|
||||
VERSION ?= $(shell git describe --tags --always)
|
||||
BUILDARCH := $(shell go env GOARCH)
|
||||
|
||||
build:
|
||||
|
||||
Reference in New Issue
Block a user