Build the web image on release only, so Lysator can autoroll :latest #201

Closed
opened 2026-10-20 17:01:24 +00:00 by littlefox · 1 comment
Owner

User: "we need to alter the way we build the image we deliver to lysator kubernetes. We can only build it on release and not for every push to main as we do now. We want to be able to autoroll the thing."

Today the image is built by hand (tools/web-image.sh, from tools/release.sh and for test builds), and every build moves latest. Lysator's autoroll rolls the Deployment whenever :latest points somewhere new, so latest must mean "the newest release" and nothing else.

Plan (D-053):

  • CI builds the image on release tags only (packaging workflow, web-image job, on the runners' per-job Docker daemon), tests it (page, wasm type, headers, a Protocol A handshake through the relay to lyskomd, a wrong origin refused), and only then pushes X.Y.Z, git-<sha> and latest. Push credentials: the REGISTRY_TOKEN secret (package read/write only).
  • A manual run (workflow_dispatch with image_tag) builds, tests and pushes only that tag, never latest: for trying the job.
  • tools/web-image.sh never tags latest any more (test builds: git-<sha>); tools/release.sh no longer builds the image.
  • docs/KUBERNETES.md: :latest with autoroll is supported, and when it moves.
User: "we need to alter the way we build the image we deliver to lysator kubernetes. We can only build it on release and not for every push to main as we do now. We want to be able to autoroll the thing." Today the image is built by hand (tools/web-image.sh, from tools/release.sh and for test builds), and every build moves `latest`. Lysator's autoroll rolls the Deployment whenever `:latest` points somewhere new, so `latest` must mean "the newest release" and nothing else. Plan (D-053): - CI builds the image on release tags only (packaging workflow, `web-image` job, on the runners' per-job Docker daemon), tests it (page, wasm type, headers, a Protocol A handshake through the relay to lyskomd, a wrong origin refused), and only then pushes `X.Y.Z`, `git-<sha>` and `latest`. Push credentials: the `REGISTRY_TOKEN` secret (package read/write only). - A manual run (workflow_dispatch with `image_tag`) builds, tests and pushes only that tag, never `latest`: for trying the job. - tools/web-image.sh never tags `latest` any more (test builds: `git-<sha>`); tools/release.sh no longer builds the image. - docs/KUBERNETES.md: `:latest` with autoroll is supported, and when it moves.
Author
Owner

Done in #202 (main green). The web-image workflow builds the image on a v* tag in the job's own Docker daemon, runs it next to a lyskomd, checks it from outside (page, wasm type, security headers, a Protocol A handshake through /relay, a foreign origin refused with 4006), and only then pushes X.Y.Z, git- and latest. tools/web-image.sh pushes git- only; release.sh no longer builds the image. Verified locally (NO_PUSH) and in CI with a manual run (#339) that pushed the test tag ci-test with REGISTRY_TOKEN; latest stayed at the 0.4.0 digest; ci-test deleted. The first real run will be the next release tag.

Done in #202 (main green). The web-image workflow builds the image on a v* tag in the job's own Docker daemon, runs it next to a lyskomd, checks it from outside (page, wasm type, security headers, a Protocol A handshake through /relay, a foreign origin refused with 4006), and only then pushes X.Y.Z, git-<commit> and latest. tools/web-image.sh pushes git-<commit> only; release.sh no longer builds the image. Verified locally (NO_PUSH) and in CI with a manual run (#339) that pushed the test tag ci-test with REGISTRY_TOKEN; latest stayed at the 0.4.0 digest; ci-test deleted. The first real run will be the next release tag.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
littlefox/neokom#201
No description provided.