release: zddc-server v0.0.8-alpha.2 + binary publish step
Adds binary mirroring to release-image.sh: cross-compiled binaries from zddc/dist/ are now copied to website/releases/zddc-server-<os>-<arch>-<channel> for every channel in the cascade, so https://zddc.varasys.io/releases/ serves binaries alongside the HTML tools. Channel pointers are mutable; no immutable per-version files are written (the container registry provides per-version pinning via image tags). Plain `sh build.sh` does NOT mirror binaries — only `release-image.sh` does, deliberately, to avoid 40MB git churn per dev iteration. This commit also picks up the routine alpha-mirror refresh from the v0.0.8-alpha.2 image cut.
This commit is contained in:
parent
43c370ab3c
commit
566070ca80
11 changed files with 50 additions and 5 deletions
12
AGENTS.md
12
AGENTS.md
|
|
@ -321,6 +321,18 @@ Pre-release semver ordering (`0.0.8-alpha.1 < 0.0.8-alpha.2 <
|
|||
tag sorting, `git tag --sort=-v:refname`, `sort -V`, npm, cargo —
|
||||
so consumers can pin or compare versions without surprises.
|
||||
|
||||
**Binary publishing** — `release-image.sh` also mirrors the
|
||||
cross-compiled binaries from `zddc/dist/zddc-server-<os>-<arch>` into
|
||||
`website/releases/zddc-server-<os>-<arch>-<channel>` for every channel
|
||||
in the cascade. These are mutable channel pointers (no immutable
|
||||
per-version files — those live in the container registry to keep the
|
||||
git tree from growing 40MB per release). Plain `sh build.sh` does
|
||||
NOT mirror the binaries; only `release-image.sh` does, deliberately,
|
||||
so the website's binaries always match a published image.
|
||||
|
||||
The mirrored files at `https://zddc.varasys.io/releases/zddc-server-…`
|
||||
are what the dev shell's `zddc-use` helper fetches by default.
|
||||
|
||||
Prerequisite: `podman login codeberg.org` (one-time, with a Codeberg
|
||||
personal token scoped `package:write`).
|
||||
|
||||
|
|
|
|||
|
|
@ -133,6 +133,39 @@ echo
|
|||
# --- Refresh HTML dist (Containerfile COPYs from dist/web) ------------------
|
||||
sh "$SCRIPT_DIR/build.sh"
|
||||
|
||||
# --- Mirror cross-compiled binaries to website/releases/ -------------------
|
||||
# Channel pointers, mutable: cascade rules mirror this image's binaries to
|
||||
# every channel in the cascade so a `zddc-use :stable` curl pulls bytes that
|
||||
# match the just-published stable image. Per-version pinning is provided by
|
||||
# the container registry's :vX.Y.Z-alpha.N tag, not by an immutable file
|
||||
# here — keeps the repo from growing 40MB per release. Plain `sh build.sh`
|
||||
# does NOT mirror binaries, deliberately: it would dirty 40MB of files on
|
||||
# every dev iteration. Use release-image.sh as the publish trigger.
|
||||
publish_binary() {
|
||||
_src="$1" # path under zddc/dist/, e.g. zddc-server-linux-amd64
|
||||
_basename=$(basename "$_src")
|
||||
if [ ! -f "$SCRIPT_DIR/zddc/dist/$_src" ]; then
|
||||
echo "warn: $_src not found in zddc/dist/; skipping mirror" >&2
|
||||
return 0
|
||||
fi
|
||||
# The version-style tag (e.g. 0.0.8-alpha.1) is in $TAGS too — skip it;
|
||||
# only iterate the channel-name tags.
|
||||
for _tag in $TAGS; do
|
||||
case "$_tag" in
|
||||
alpha | beta | stable)
|
||||
_dest="$SCRIPT_DIR/website/releases/${_basename%.exe}-${_tag}"
|
||||
case "$_basename" in *.exe) _dest="${_dest}.exe" ;; esac
|
||||
cp -f "$SCRIPT_DIR/zddc/dist/$_src" "$_dest"
|
||||
echo "mirrored $_src → website/releases/$(basename "$_dest")"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
publish_binary zddc-server-linux-amd64
|
||||
publish_binary zddc-server-darwin-amd64
|
||||
publish_binary zddc-server-darwin-arm64
|
||||
publish_binary zddc-server-windows-amd64.exe
|
||||
|
||||
# --- Tag the commit (idempotent: skip if the tag already points here) -------
|
||||
if git -C "$SCRIPT_DIR" rev-parse -q --verify "refs/tags/$GIT_TAG" >/dev/null; then
|
||||
_existing=$(git -C "$SCRIPT_DIR" rev-list -n 1 "$GIT_TAG")
|
||||
|
|
|
|||
|
|
@ -2095,7 +2095,7 @@ td[data-field="trackingNumber"] {
|
|||
<div class="header-left">
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Archive</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 22:41:21 · 9459139-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
</div>
|
||||
<button id="addDirectoryBtn" class="btn btn-primary">Add Local Directory</button>
|
||||
<button id="refreshHeaderBtn" class="btn btn-secondary hidden" title="Refresh Data" style="font-size:1.1rem;">⟳</button>
|
||||
|
|
|
|||
|
|
@ -1358,7 +1358,7 @@ body.help-open .app-header {
|
|||
<div class="header-left">
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Classifier</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 22:41:21 · 9459139-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
</div>
|
||||
<button id="selectDirectoryBtn" class="btn btn-primary">Select Directory</button>
|
||||
<button id="refreshBtn" class="btn btn-secondary hidden" title="Refresh and rescan directory">Refresh</button>
|
||||
|
|
|
|||
|
|
@ -884,7 +884,7 @@ body {
|
|||
<header class="app-header">
|
||||
<div class="header-left">
|
||||
<span class="app-header__title">ZDDC Archive</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 22:41:21 · 9459139-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<button id="theme-btn" class="btn btn-secondary" title="Theme: auto (follows OS)" aria-label="Theme: auto (follows OS)">◐</button>
|
||||
|
|
|
|||
|
|
@ -1650,7 +1650,7 @@ body.help-open .app-header {
|
|||
<div class="header-left">
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Markdown</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 22:41:21 · 9459139-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
</div>
|
||||
<button id="select-directory" class="btn btn-primary" title="Select a Directory">Select Directory</button>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2192,7 +2192,7 @@ dialog.modal--narrow {
|
|||
<span id="no-js-notice" class="text-gray-400 text-xs italic">JavaScript not available</span>
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Transmittal</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 22:41:21 · 9459139</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
</div>
|
||||
<div class="app-header__spacer"></div>
|
||||
<div class="app-header__icons">
|
||||
|
|
|
|||
BIN
website/releases/zddc-server-darwin-amd64-alpha
Executable file
BIN
website/releases/zddc-server-darwin-amd64-alpha
Executable file
Binary file not shown.
BIN
website/releases/zddc-server-darwin-arm64-alpha
Executable file
BIN
website/releases/zddc-server-darwin-arm64-alpha
Executable file
Binary file not shown.
BIN
website/releases/zddc-server-linux-amd64-alpha
Executable file
BIN
website/releases/zddc-server-linux-amd64-alpha
Executable file
Binary file not shown.
BIN
website/releases/zddc-server-windows-amd64-alpha.exe
Executable file
BIN
website/releases/zddc-server-windows-amd64-alpha.exe
Executable file
Binary file not shown.
Loading…
Reference in a new issue