ci(release): nightlies system (cron + dispatch, nightly channel) (#592)#19
Merged
Conversation
Fan out the validated nightlies release system from the reference (dig-updater)
to digstore, replacing the tag-and-release-on-every-merge model.
- Convert changelog-tag.yml -> nightly-release.yml: schedule (0 0 * * * midnight
UTC) + workflow_dispatch (channel both|stable|nightly, force bool); removes
push:branches:main. Keeps version-detect, skip-if-tagged, git-cliff changelog,
RELEASE_TOKEN push, loop guard, no-op-if-absent.
- Add the nightly channel: dated nightly-YYYYMMDD + rolling nightly, prerelease,
never latest, keep-14 retention (anchored ^nightly-[0-9]{8}$ + cleanup-tag),
delete-then-upload. Nightly does NOT run the S3 publish (stable-only).
- Extract the cross-OS build into a reusable build-binaries.yml (workflow_call,
version+ref) preserving the guest-wasm prereq (§3.5), the digs alias, and both
asset shapes (bare per-OS binaries + apt .tar.gz, 5-target matrix incl native
linux-arm64). release.yml is now tag-only (meta -> build -> publish + the S3
hub-worker binary upload).
- R1 force-guard: refuse to force-move a tag when a PUBLISHED release exists and
the tag commit differs from HEAD (same-commit re-cut + tag-repair allowed).
- opus note: pin stable checkout ref:main before the HEAD:main push.
- A3: un-swallowed gh release list in the prune step.
- Guard test nightly_release_workflow_shape.rs (11) pins the shape + asserts the
reusable build ships the digs alias.
- SPEC §12 + runbooks/release.md document the pipeline + the R2 60-day auto-disable.
- Lock: bump transitive spin 0.9.8 -> 0.9.9 (0.9.8 was yanked upstream, which
reds the supply-chain audit); a lock-only update, no Cargo.toml change.
Version bump 0.13.1 -> 0.13.2 (ci -> patch) to validate through the new system.
Co-Authored-By: Claude <noreply@anthropic.com>
MichaelTaylor3d
force-pushed
the
ci/nightlies
branch
from
July 14, 2026 19:38
fd8b795 to
a3d8fa2
Compare
MichaelTaylor3d
marked this pull request as ready for review
July 14, 2026 20:08
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task
Fan out the VALIDATED nightlies release system (reference: DIG-Network/dig-updater #590/#15) to digstore. Superproject issue DIG-Network/dig_ecosystem#592 (child of epic #590). Release-infra change — do NOT merge; hand to the review gate.
What changed
changelog-tag.yml→nightly-release.yml:schedule: 0 0 * * *(midnight UTC) +workflow_dispatch(channel,force). Removedpush: branches: main. Preserves version-detect ([workspace.package].version), skip-if-tagged idempotency, git-cliff changelog, RELEASE_TOKEN push, loop guard, no-op-if-absent.nightly-YYYYMMDD+ rollingnightly,prerelease, neverlatest, keep-14 (anchored filter +--cleanup-tag), delete-then-upload. Nightly does not run the S3 publish (stable-only, so a nightly never moves thelatestbinary the hub compile-worker reads).build-binaries.yml(workflow_call,version+ref) preserves the guest-wasm prereq (§3.5 / BINDING D6 — built per matrix leg before the CLI), thedigsalias, and both asset shapes (bare per-OS binaries + apt.tar.gz) across the 5-target matrix (incl nativeubuntu-24.04-arm).release.ymlis now tag-only (meta → build → publish+ the S3 hub-worker binary upload, both tag-gated).ref: main.gh release list.crates/digstore-cli/tests/nightly_release_workflow_shape.rs(11, incl an assertion that the reusable build ships--bin digstore --bin digs+ thedigs-*asset). All green locally.runbooks/release.mddocument the pipeline + the R2 60-day cron auto-disable recovery.Version
0.13.1 → 0.13.2(ci → patch). Cargo.lock synced (cargo update --workspace; 5 workspace crates inherit the version).Per-repo deviations from the template
checkjob in the reusable build — digstore's priorrelease.ymlhad none (acheckwould need the guest-wasm fordigstore-cli's build.rs, complicating it);ci.ymlruns fmt/clippy/test/coverage on every PR, so the release path stays build+publish only. Matches digstore's existing behavior.workflow_dispatchcanary torelease.yml(it had none) to match the reference; publish + S3 gated ongithub.ref_type == 'tag'.ci.ymlmatrix is[ubuntu-latest, windows-latest]— macOS is NOT built on PR, so a midnight stable tag could be cut from amainwhose macOS build was never exercised by PR CI. The nightly channel mitigates this (builds all 5 targets frommainHEAD nightly, ~24h detection lag). Documented in SPEC §12 + the runbook; adding macОS toci.ymlis a follow-up.runbooks/release.mdis new.Verification
cargo build -p digstore-guest --target wasm32-unknown-unknown --release+cargo test -p digstore-cli --test nightly_release_workflow_shape --locked→ 11 passed.🤖 Generated with Claude Code
https://claude.ai/code/session_014CHdgyC9V2Lhhwhuxk3e3r