check / check (push) Waiting to run
REPO_POLICIES.md, script/cibuild, script/docker, script/lint and script/test are their copies at that commit. In every Dockerfile stage the system package install and the Go module download now come before ARG CACHEBUST, so check builds keep those layers until the base image, the install line, go.mod or go.sum change. golangci-lint run also mounts golangci-lint's cache. The test phase and the build stage install their packages with apt-get and apk directly, as REPO_POLICIES.md now has them do, instead of through script/bootstrap --cgo. The test phase keeps Debian's recommended packages, which bring libheif's AVIF encoder that the tests use. Model: opus-5-5
29 lines
1.1 KiB
Bash
Executable File
29 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# script/lint: run the linter. Linting is a phase of the Dockerfile and
|
|
# this builds that phase alone; the linter is never installed or run on
|
|
# a developer host, where a shared result cache and a host-global lock
|
|
# 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 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
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
docker build --build-arg CACHEBUST="$(date +%s)-$$" \
|
|
--target lint \
|
|
--output type=cacheonly .
|
|
}
|
|
|
|
main "$@"
|