Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3d5deb71b |
@@ -30,13 +30,6 @@ fmt-check, and commit.
|
|||||||
repository's own entries, which a re-vendor keeps, and the Go styleguide puts
|
repository's own entries, which a re-vendor keeps, and the Go styleguide puts
|
||||||
`*.log`, `*.out`, `*.test` and binaries among those entries. Common outputs
|
`*.log`, `*.out`, `*.test` and binaries among those entries. Common outputs
|
||||||
stay out of the canonical `.gitignore`; each repository lists its own.
|
stay out of the canonical `.gitignore`; each repository lists its own.
|
||||||
- 2026-10-05: `script/cibuild`, `script/docker`, `script/lint` and `script/test`
|
|
||||||
now assign the image tag from `script/projectname` on its own line before the
|
|
||||||
`docker build` (issue 101), so `set -e` stops the script where
|
|
||||||
`script/projectname` fails instead of running `docker build` with a broken
|
|
||||||
tag. The comment above it in each script says why, and the snippets in
|
|
||||||
`REPO_POLICIES.md` show the same form. Repositories pick this up on their next
|
|
||||||
re-vendor.
|
|
||||||
- 2026-10-04: Went through the fleet findings recorded on 2026-08-09 (issue 62)
|
- 2026-10-04: Went through the fleet findings recorded on 2026-08-09 (issue 62)
|
||||||
and added the two rules `REPO_POLICIES.md` did not yet state: a new or changed
|
and added the two rules `REPO_POLICIES.md` did not yet state: a new or changed
|
||||||
check is proven by planting a defect it must catch; and a change to a separate
|
check is proven by planting a defect it must catch; and a change to a separate
|
||||||
|
|||||||
@@ -118,9 +118,8 @@ style conventions are in separate documents:
|
|||||||
and nothing else:
|
and nothing else:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
tag="$(script/projectname)"
|
docker build --no-cache --target lint -t "$(script/projectname)-lint" .
|
||||||
docker build --no-cache --target lint -t "$tag-lint" .
|
docker build --no-cache --target test -t "$(script/projectname)-test" .
|
||||||
docker build --no-cache --target test -t "$tag-test" .
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**A stage that is not the last one in the file is built only when the final
|
**A stage that is not the last one in the file is built only when the final
|
||||||
@@ -133,9 +132,7 @@ style conventions are in separate documents:
|
|||||||
**Every `docker build` in `script/` is tagged**, here and in
|
**Every `docker build` in `script/` is tagged**, here and in
|
||||||
`script/cibuild` and `script/docker`. An untagged build leaves a dangling
|
`script/cibuild` and `script/docker`. An untagged build leaves a dangling
|
||||||
image behind on every invocation, on every developer host and every CI
|
image behind on every invocation, on every developer host and every CI
|
||||||
runner; a tagged one replaces the previous image. Each script assigns the
|
runner; a tagged one replaces the previous image.
|
||||||
tag on its own line before the build, so `set -e` stops it where
|
|
||||||
`script/projectname` fails.
|
|
||||||
|
|
||||||
Inside a phase the tool is invoked directly — `golangci-lint`, `go test`,
|
Inside a phase the tool is invoked directly — `golangci-lint`, `go test`,
|
||||||
`eslint`, `prettier` — never through `make lint` or `script/test`, which are
|
`eslint`, `prettier` — never through `make lint` or `script/test`, which are
|
||||||
@@ -440,15 +437,13 @@ style conventions are in separate documents:
|
|||||||
byte-identically across repos:
|
byte-identically across repos:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# The version and the tag each get their own line: a failing command
|
# Own line: a failing command substitution inside an argument does not
|
||||||
# substitution inside an argument does not trip `set -e`, so the inline
|
# trip `set -e`, so the inline form degrades to an empty constant.
|
||||||
# form degrades to an empty constant.
|
|
||||||
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
||||||
[ -n "$version" ] || version="unknown"
|
[ -n "$version" ] || version="unknown"
|
||||||
tag="$(script/projectname)"
|
|
||||||
docker build --no-cache \
|
docker build --no-cache \
|
||||||
--build-arg VERSION="$version" \
|
--build-arg VERSION="$version" \
|
||||||
-t "$tag" .
|
-t "$(script/projectname)" .
|
||||||
```
|
```
|
||||||
|
|
||||||
`--always` makes an untagged repo yield an abbreviated commit hash rather
|
`--always` makes an untagged repo yield an abbreviated commit hash rather
|
||||||
|
|||||||
+5
-7
@@ -14,17 +14,15 @@ main() {
|
|||||||
cd "$ROOT"
|
cd "$ROOT"
|
||||||
"$SCRIPT_DIR/bootstrap"
|
"$SCRIPT_DIR/bootstrap"
|
||||||
"$SCRIPT_DIR/check"
|
"$SCRIPT_DIR/check"
|
||||||
# The version and the tag each get their own line: a failing
|
# Own line: a failing command substitution inside an argument does
|
||||||
# command substitution inside an argument does not trip `set -e`,
|
# not trip `set -e`, so the inline form degrades silently to an
|
||||||
# so the inline form degrades silently to an empty constant. The
|
# empty constant. The VERSION build argument takes precedence over
|
||||||
# VERSION build argument takes precedence over the version a build
|
# the version a build stage derives from the .git in the context.
|
||||||
# stage derives from the .git in the context.
|
|
||||||
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
||||||
[ -n "$version" ] || version="unknown"
|
[ -n "$version" ] || version="unknown"
|
||||||
tag="$("$SCRIPT_DIR/projectname")"
|
|
||||||
docker build --no-cache \
|
docker build --no-cache \
|
||||||
--build-arg VERSION="$version" \
|
--build-arg VERSION="$version" \
|
||||||
-t "$tag" .
|
-t "$("$SCRIPT_DIR/projectname")" .
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
+5
-7
@@ -10,17 +10,15 @@ ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|||||||
|
|
||||||
main() {
|
main() {
|
||||||
cd "$ROOT"
|
cd "$ROOT"
|
||||||
# The version and the tag each get their own line: a failing
|
# Own line: a failing command substitution inside an argument does
|
||||||
# command substitution inside an argument does not trip `set -e`,
|
# not trip `set -e`, so the inline form degrades silently to an
|
||||||
# so the inline form degrades silently to an empty constant. The
|
# empty constant. The VERSION build argument takes precedence over
|
||||||
# VERSION build argument takes precedence over the version a build
|
# the version a build stage derives from the .git in the context.
|
||||||
# stage derives from the .git in the context.
|
|
||||||
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
||||||
[ -n "$version" ] || version="unknown"
|
[ -n "$version" ] || version="unknown"
|
||||||
tag="$("$SCRIPT_DIR/projectname")"
|
|
||||||
docker build --no-cache \
|
docker build --no-cache \
|
||||||
--build-arg VERSION="$version" \
|
--build-arg VERSION="$version" \
|
||||||
-t "$tag" .
|
-t "$("$SCRIPT_DIR/projectname")" .
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
+1
-5
@@ -15,13 +15,9 @@ ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|||||||
|
|
||||||
main() {
|
main() {
|
||||||
cd "$ROOT"
|
cd "$ROOT"
|
||||||
# The tag gets its own line: a failing command substitution inside
|
|
||||||
# an argument does not trip `set -e`, so the inline form degrades
|
|
||||||
# silently to an empty constant.
|
|
||||||
tag="$("$SCRIPT_DIR/projectname")"
|
|
||||||
docker build --no-cache \
|
docker build --no-cache \
|
||||||
--target lint \
|
--target lint \
|
||||||
-t "$tag-lint" .
|
-t "$("$SCRIPT_DIR/projectname")-lint" .
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
+1
-5
@@ -11,13 +11,9 @@ ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|||||||
|
|
||||||
main() {
|
main() {
|
||||||
cd "$ROOT"
|
cd "$ROOT"
|
||||||
# The tag gets its own line: a failing command substitution inside
|
|
||||||
# an argument does not trip `set -e`, so the inline form degrades
|
|
||||||
# silently to an empty constant.
|
|
||||||
tag="$("$SCRIPT_DIR/projectname")"
|
|
||||||
docker build --no-cache \
|
docker build --no-cache \
|
||||||
--target test \
|
--target test \
|
||||||
-t "$tag-test" .
|
-t "$("$SCRIPT_DIR/projectname")-test" .
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user