Releasing vev
Releases are cut by tagging: git tag -s v0.X.Y -m v0.X.Y && git push origin v0.X.Y.
origin is ermite (git.bnema.dev). Its release workflow cross-compiles
linux/amd64, linux/arm64 and darwin/arm64 (CGO_ENABLED=0), publishes the
release on git.bnema.dev with checksums.txt, and pushes the vev-bin
PKGBUILD to AUR (stable tags only: skip_upload: auto skips AUR for
-rc.*/-alpha.* prerelease tags). The GitHub mirror receives the tag but
publishes nothing.
Checklist
- main is green on ermite CI (
ermite run list vev). - Tag and push. Watch:
ermite run list vev, thenermite run watch vev <n>. - Verify the release:
ermite release view vev v0.X.Yshows three archives,checksums.txtand the grouped changelog. - On Linux amd64, download the installer from the exact tag, inspect it,
then run it for that same version:
Confirminstaller=$(mktemp) curl -fsSL https://git.bnema.dev/vev/raw/v0.X.Y/install.sh -o "$installer" less "$installer" VEV_VERSION=v0.X.Y sh "$installer" rm -f "$installer"vev --versionprintsvev 0.X.Y (commit ..., built ...). - Stable tags only: confirm https://aur.archlinux.org/packages/vev-bin picked up the new version.
If the release publishes but AUR fails
Do not delete or re-push the tag. The ermite release is the source of
truth; only the PKGBUILD push failed (usually SSH/key, secret AUR_KEY). Fix
the cause, then either:
- Re-run the failed job (
ermite run rerun vev <n> --failed), which re-executes goreleaser idempotently for the same tag, or - For manual recovery, clone
ssh://aur@aur.archlinux.org/vev-bin.git, update its existing PKGBUILD for the exact tag using that release'schecksums.txt, and regenerate.SRCINFOwithmakepkg --printsrcinfo > .SRCINFO. Review the diff, then commit and push only the AUR repository.
If AUR publishes but the release fails
Do not delete or re-push the tag. Fix the workflow failure and rerun it
(ermite run rerun vev <n> --failed); if necessary, repair the release with
ermite release upload vev v0.X.Y <files> --clobber, then verify both
publication targets before proceeding.
Version stamping
vev --version reads internal/app.{version,commit,date}, stamped via
ldflags in .goreleaser.yaml. Local builds report 0.1.0-dev.