check / check (push) Successful in 24s
The comments said a phase that is not the last stage is built only when --target names it. The canonical Dockerfile's last stage copies from both phases, so a plain build builds them too. The comments now say what --target does in every repository: it builds that phase and the stages it depends on, nothing else. The headers no longer say each script builds its phase alone, which is false wherever the phase depends on another stage. Model: opus-5-5
25 lines
930 B
Bash
Executable File
25 lines
930 B
Bash
Executable File
#!/bin/sh
|
|
# script/test: run the test suite. Testing is a phase of the Dockerfile
|
|
# and this builds that phase, on the same terms as script/lint:
|
|
# --target so that only the test phase and the stages it depends on are
|
|
# built, and a new CACHEBUST value because a cached test layer is a test
|
|
# that did not run; unlike --no-cache, it keeps the layers above the ARG
|
|
# CACHEBUST 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 test \
|
|
--output type=cacheonly .
|
|
}
|
|
|
|
main "$@"
|