Docs drift: node images are now built automatically on tag, not manually

Background

The release pipeline was restructured (commit 9122218, "ci: build all node VM images on tag, gate the release on them") so that a tagged release builds all node VM images automatically and won't publish a Release unless they succeed (all-or-nothing). The docs still describe the old behaviour, where build-node-image was a manual, opt-in job you triggered once per Kubernetes version.

What's stale

  • docs/releasing.md — the "Node VM images in a release" section says images are not built automatically on tag and that you "trigger the manual build-node-image job once per Kubernetes version." That's no longer true.
  • docs/guides/prebaked-images.md — the "Build an image" step says "In CI: trigger the manual build-node-image job." Also stale for the release path.

Current behaviour to document

  • On a tag pipeline, build-node-image runs automatically and is required (allow_failure: false): it loops over the KUBERNETES_VERSIONS variable (currently v1.30.14 v1.31.5) with NODE_IMAGE_OS_TARGET, builds each qcow2, and uploads them to the capvco-images/<tag>/ generic package.
  • The release job attaches every image under …/releases/<tag>/downloads/images/<file>.qcow2 alongside the bundle/templates/CLIs. If any image build fails, no Release is published.
  • To add/remove a shipped version, edit KUBERNETES_VERSIONS in .gitlab-ci.yml (single source of truth; the release job reconstructs the asset names from it).
  • On a branch pipeline, build-node-image stays a manual dev build that just produces the qcow2 artifacts (never on MR pipelines).
  • Note the practical cost: the two-image KVM build dominates the pipeline (~50 min for two versions), so a complete release takes ~1 hour.

Acceptance

docs/releasing.md and docs/guides/prebaked-images.md match the actual .gitlab-ci.yml behaviour above; mkdocs build --strict still passes.