Skip to content

Release: promote main's CI and Mobile runs instead of racing them - #151

Open
itz4blitz wants to merge 4 commits into
mainfrom
ci/release-promotion
Open

itz4blitz wants to merge 4 commits into
mainfrom
ci/release-promotion

Conversation

@itz4blitz

Copy link
Copy Markdown
Collaborator

Release promotes main's runs instead of racing them.

  • wait-for-ci finds main's CI run (ci.yml, push, main, this SHA), retrying for a few minutes on a tag since both pushes start together, and waits for it. A failed run fails the release, so nothing is published from a commit main rejected. No run (docs-only commit, branch dispatch) means compiling as before.
  • macOS, Linux (x86_64 and aarch64) and Windows get the run id and reuse its packages through reuse-binaries.sh; a missing package still falls back to compiling. aarch64 reuse starts once ci/speed adds tinyclient-linux-aarch64.
  • phones does the same with the Mobile run, dispatching mobile.yml on the ref when main never ran it, and uploads tinyclient-$LABEL-android-debug.apk and tinyclient-$LABEL-ios-unsigned.zip as release-phones. On a tag those names match the existing release assets, and publish adds unversioned copies (tinyclient-android-debug.apk) like every other file.
  • mobile.yml: no tag trigger, no attach-to-release.

Checked locally against real runs: 1d4acaa -> run 41479383097, success, id passed on; f542c04 -> run 41506153717, failure, exit 1.

🤖 Generated with Claude Code

itz4blitz and others added 4 commits November 2, 2026 22:30
The tag push and main's push of the same commit start together, so the
old lookup for a successful CI run always came up empty and every
platform recompiled. Release also published commits whose main CI
failed, and Mobile rebuilt the phones on the tag only to time out
waiting for the release.

A wait-for-ci job now finds main's CI run for the commit, waits for it,
and hands its id to the build jobs; a failed run fails the release, and
no run means compiling as before. A phones job does the same with the
Mobile run (starting one on the ref when main never ran it) and adds the
APK and the unsigned iOS app to the release. Mobile no longer runs on
tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dispatched Mobile run took 2h24m while macOS runners queued, past the
phones job's 120 minutes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two jobs polling every 30 seconds came close to the token's hourly API
allowance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@itz4blitz
itz4blitz force-pushed the ci/release-promotion branch from bc49e7a to ca0d3f8 Compare November 3, 2026 04:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant