feat(ci): cut the stable desktop release every night - #52
Open
charlesvien wants to merge 1 commit into
Open
Conversation
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.
Problem
Stable desktop releases are manual. Every
Publishrun since July was aworkflow_dispatch, so a fix that lands on main reaches stable-channel users only when someone clicks Run workflow. The nightly cron only produced pre-releases, which nightly-channel users see and nobody else does.Changes
publish.ymlnow also runs at 03:00 UTC. The scheduled run is gated on main being ahead of the latest stable release (/releases/latestplus the compare API), so a quiet night builds nothing and a night the cron misses is caught up the next night. Dispatch and tag pushes build unconditionally, as before.nightly.ymlis deleted. Keeping it would build the same commit twice a night under two version numbers. The full matrix ships every night now (macOS arm64+x64 signed and notarized, Windows, Linux), which also closes the "Intel install can hit updater errors when the newest release is an arm64-only nightly" gap from the roadmap.A
concurrencygroup queues a manual dispatch behind a scheduled run: theversionjob reads the release list at run time, so two runs in flight would stamp the same version and race to create one release.The in-app channel picker becomes a no-op (both channels get the same nightly stable build). Left in place for now so a pre-release track can come back without a client change. Happy to remove it in a follow-up.
No new secrets: the scheduled path runs with the signing and notarization secrets
Publishalready has. Docs updated (CLAUDE.md, SESSIONS, ROADMAP).How did you test this code?
actionlinton the workflow. Ran the gate script verbatim against the live repo: asscheduleonorigin/mainit resolvesv0.2.51(ignores thev0.2.52pre-release) and reports 3 commits ahead, so tonight's run would build; on thev0.2.51commit itself it skips; asworkflow_dispatchit builds without calling the API.Not dispatched from this branch: that would cut a real stable release, and the fork has no signing secrets. The first live exercise is the first cron after merge, or a manual Run workflow, which takes the same path minus the gate.