Keep modules, lint cache and system packages in check builds (closes #130)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
On sneak's ruling in #130, check builds may keep three more things besides Go's build cache. In each stage of the canonical Go Dockerfile, the system-package install and the module download now come before ARG CACHEBUST, so Docker keeps those layers until the base image, the install line, go.mod or go.sum changes. The modules are kept as a layer, not a cache mount, because Go does not check a cache mount's files again. golangci-lint run also mounts golangci-lint's cache. Every step that lints, tests or compiles still comes after ARG CACHEBUST and reruns on every check build, and both go test runs keep -count=1. The policy, both checklists, the Go style guide, the README and the script comments state the rule the same way. Model: opus-5-5
This commit is contained in:
+7
-5
@@ -5,11 +5,13 @@
|
||||
# make its answer untrustworthy.
|
||||
#
|
||||
# The phase is not the last stage in the file, so it is built only when
|
||||
# --target names it. A new CACHEBUST value reruns every RUN step, since
|
||||
# a cached lint layer is a lint that did not run; unlike --no-cache, it
|
||||
# keeps Go's build cache. This relies on every stage of the Dockerfile
|
||||
# declaring ARG CACHEBUST first; a stage without that line is served
|
||||
# from cache on an unchanged tree, with no warning.
|
||||
# --target names it. A new CACHEBUST value reruns every RUN step after
|
||||
# the ARG CACHEBUST line, since a cached lint layer is a lint that did
|
||||
# not run; unlike --no-cache, it keeps the layers above that line and
|
||||
# the cache mounts. This relies on every stage of the Dockerfile
|
||||
# declaring ARG CACHEBUST before every step that lints, tests or
|
||||
# compiles; a stage without that line is served from cache on an
|
||||
# unchanged tree, with no warning.
|
||||
# --output type=cacheonly writes no image, since nothing uses one.
|
||||
set -eu
|
||||
|
||||
|
||||
Reference in New Issue
Block a user