All checks were successful
check / check (push) Successful in 3m29s
static/js/alpine.min.js was a committed minified bundle: unreviewable, referenced by no hash, and forbidden by REPO_POLICIES.md on both counts. It is now fetched by script/fetch-assets from a pinned npm registry tarball, with the tarball sha256 and the extracted file's sha256 both hardcoded and checked before anything is installed. The hash of every installed asset lives in static/vendor.sha256, and static/vendor_test.go re-hashes the bytes go:embed actually put in the binary against that manifest, so the pin is enforced on what ships rather than merely recorded. .gitignore keeps the artifact out of the repo and .dockerignore keeps a host copy out of the build context, so the image can only get it by fetching and verifying it. Alpine 3.14.9 is byte-identical to the blob that was committed (3ed1eed252488921df65e363d6715deb04d7f92aaedb9e52199fdf73cb1e0ad3), so the served asset does not change; internal/server/static_assets_test.go fetches every /s/ script base.html loads through the real router to prove the page still gets it.
24 lines
586 B
Plaintext
24 lines
586 B
Plaintext
# .ci-fingerprint is deliberately NOT excluded: it is the CI cache barrier
|
|
# that keeps the check stages from replaying a cached pass. See the lint
|
|
# stage of the Dockerfile.
|
|
.git/
|
|
bin/
|
|
# Third-party browser assets are fetched and hash-verified inside the build by
|
|
# script/fetch-assets. Excluding any host copy keeps a developer's working tree
|
|
# from supplying the bytes that get shipped. The script and its
|
|
# static/vendor.sha256 manifest stay in the context.
|
|
static/js/alpine.min.js
|
|
*.md
|
|
LICENSE
|
|
.editorconfig
|
|
.env
|
|
.env.*
|
|
*.db
|
|
*.sqlite
|
|
*.sqlite3
|
|
.DS_Store
|
|
.idea/
|
|
.vscode/
|
|
tmp/
|
|
temp/
|