Compare commits
1 Commits
341c8afd76
...
2c8f3827ff
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c8f3827ff |
13
README.md
13
README.md
@@ -78,18 +78,21 @@ provide:
|
||||
- `script/cibuild` — the CI build: `script/lint` first, for fail-fast feedback,
|
||||
then the main image, which runs the non-lint checks
|
||||
- `script/install-precommit` — install the git pre-commit hook that runs
|
||||
`script/check`
|
||||
`script/precommit`
|
||||
|
||||
Each of those has a Makefile shim of the same name — `make bootstrap`,
|
||||
`make setup`, `make test`, `make lint`, `make fmt`, `make fmt-check`,
|
||||
`make check`, `make docker`, `make cibuild` — with one exception:
|
||||
`script/install-precommit` is `make hooks`. `script/precommit`, which is what
|
||||
the installed hook runs, is `make precommit`. Prefer the make targets; the
|
||||
`Makefile` is the authoritative list of what this repo can do.
|
||||
`Makefile` lists the operations you are expected to run.
|
||||
|
||||
`make cibuild` is the slow one. It runs two container builds rather than
|
||||
anything on the host, so budget minutes, not the seconds a `make`-shaped command
|
||||
usually implies. That is the cost of the CI build, not a sign of a problem.
|
||||
`make cibuild` is the slowest target: it is the only one that runs two container
|
||||
builds, the lint image first and then the main image. The two share the
|
||||
`script/bootstrap` layer byte-for-byte, so the pinned-Hugo compile described
|
||||
above is paid once per machine rather than twice, and once that layer is cached
|
||||
a full `make cibuild` takes seconds. That is the cost of the CI build, not a
|
||||
sign of a problem.
|
||||
|
||||
Every lint run for this repo happens inside a container, and only the lint does.
|
||||
`script/lint` has no host path and no "already inside a container?" branch, so
|
||||
|
||||
37
TODO.md
37
TODO.md
@@ -50,16 +50,22 @@ leaning on `.gitignore` (https://git.eeqj.de/sneak/lora.vegas/issues/33).
|
||||
now lists both. `README.md`'s Entrypoints section gained the script-to-target
|
||||
mapping, including the two names that do not match —
|
||||
`script/install-precommit` is `make hooks`, and `script/precommit` is
|
||||
`make precommit` — plus a warning that `make cibuild` costs minutes because it
|
||||
is two container builds, so nobody types it expecting a `make`-shaped runtime.
|
||||
Verified that `make cibuild` earns its green rather than replaying a warm
|
||||
cache: one invocation ran both builds for real in sequence, each with its own
|
||||
distinct `CHECK_EPOCH`, with `RUN script/bootstrap` `CACHED` above and no
|
||||
check layer cached below it — the `Dockerfile.lint` build echoed its epoch and
|
||||
printed hugo's own build table, then the main image build echoed a different
|
||||
epoch, ran `script/test` for the production build and `script/fmt-check` for
|
||||
the formatting check. `make precommit` passes on a clean tree, and
|
||||
`make check` passes
|
||||
`make precommit` — plus a note that `make cibuild` is the slowest target
|
||||
because it is the only one that runs two container builds, while still taking
|
||||
seconds once the shared `script/bootstrap` layer is cached. The section's
|
||||
pre-existing `script/install-precommit` bullet, which claimed the installed
|
||||
hook runs `script/check`, now says `script/precommit`, which is what the
|
||||
script actually writes into `.git/hooks/pre-commit`. The stale Future Step
|
||||
asking for post-deploy confirmation of `static/_headers` is dropped here: it
|
||||
was confirmed live on both hostnames
|
||||
(https://git.eeqj.de/sneak/lora.vegas/issues/14). Verified that `make cibuild`
|
||||
earns its green rather than replaying a warm cache: one invocation ran both
|
||||
builds for real in sequence, each with its own distinct `CHECK_EPOCH`, with
|
||||
`RUN script/bootstrap` `CACHED` above and no check layer cached below it — the
|
||||
`Dockerfile.lint` build echoed its epoch and printed hugo's own build table,
|
||||
then the main image build echoed a different epoch, ran `script/test` for the
|
||||
production build and `script/fmt-check` for the formatting check.
|
||||
`make precommit` passes on a clean tree, and `make check` passes
|
||||
- 2026-08-10: moved the lint into Docker
|
||||
(https://git.eeqj.de/sneak/lora.vegas/issues/38). A new root `Dockerfile.lint`
|
||||
runs `hugo --minify --printPathWarnings` as a build step, so a successful
|
||||
@@ -336,17 +342,6 @@ outside this repo, so nothing there may be picked up as the Next Step.
|
||||
- Delete the stale remote branches `feat/initial-site` and `security-audit`;
|
||||
only the owner can remove them
|
||||
(https://git.eeqj.de/sneak/lora.vegas/issues/15)
|
||||
- After the next deploy, confirm the `_headers` file actually took effect, on
|
||||
both `https://lora.vegas/` and `https://www.lora.vegas/`: `curl -sSI` against
|
||||
each must show `strict-transport-security` or `content-security-policy`.
|
||||
Cloudflare Pages silently ignores a malformed `_headers`, and checking
|
||||
`x-content-type-options` would pass either way because the edge sends it
|
||||
regardless. `www` has to be checked too and not just the apex: dropping
|
||||
`includeSubDomains` rests on `www.lora.vegas` being served by this same Pages
|
||||
project, which was established behaviourally from identical response bodies
|
||||
rather than from the Cloudflare dashboard. If `www` turns out not to be
|
||||
covered, the `includeSubDomains` decision has to be revisited
|
||||
(https://git.eeqj.de/sneak/lora.vegas/issues/14)
|
||||
- Decide the HSTS `includeSubDomains` and `preload` posture for `lora.vegas`.
|
||||
Both are owner calls: neither can be walked back inside the max-age window,
|
||||
and `includeSubDomains` binds hostnames this repo does not control
|
||||
|
||||
Reference in New Issue
Block a user