Why
There are no tags on the repository, and the tag-driven release workflow
(.vole/workflows/release.yaml) has never run end to end. The verify workflow
builds and packages one architecture, but it does not exercise the v* trigger,
the SBOM step, or release: true.
At the same time, docs/deploy/*.md and docs/packaging.md already fetch
https://rodent.software/r/vole/releases/v0.2.0/artifacts/..., so the first
public server cannot follow the deployment guide until a v0.2.0 release with
those files exists. The first machine is also a bootstrap: the guides download
the package from the instance being deployed, and that instance does not exist
yet.
Scope
- Rehearse in a throwaway repository on the instance: tag it, let the release
workflow build and attach the packages, download and install the
.debon a test VM, then delete the repository. Do not attempt the real first release cold: once a file is attached to a release, the release is immutable. - Decide the version before tagging.
cmd/vole/main.goand every deployment guide say0.2.0; if the first release is a different number, update all of them in the same change and say so in the release note. - Record the bootstrap path for the first production server: run the release
steps locally (
vole workflow run releasebuilds but does not publish), use a temporary package URL, or attach a locally built package by hand. The first instance must exist before its own release page can be used. - Make sure a runner is registered on the public instance before the real tag is pushed. The tag workflow attaches the artifacts from that runner.
- Write the tag’s release notes, including the metadata tree
(
changes/<ulid>/change.md) and the route rename (#205). - After publishing, check that every URL in
docs/deploy/*.mdmatches the attached file names and the version.
Checklist
- Rehearse tag, release build, attach, download, and install on a throwaway repository and VM.
- Decide and record the first version.
- Bootstrap the first production machine.
- Register a runner on the public instance.
- Push the real tag with release notes.
- Verify the package URLs and checksums in the deployment guides.
- Link the release from the README or deployment guide.
Acceptance
- The real release page carries the
.deb,.rpm, plain binaries,SHA256SUMS, and the SBOM, and a clean machine installs from the documented URL. - A second machine can be created by following
docs/deploy/without a manual build step. - The rehearsal and bootstrap needed no secret in a workflow file or a log.