Skip to content

chore(ci): upload only the desktop release files - #56071

Open
neriousy wants to merge 1 commit into
cli-target-jobsfrom
desktop-release-files
Open

neriousy wants to merge 1 commit into
cli-target-jobsfrom
desktop-release-files

Conversation

@neriousy

Copy link
Copy Markdown
Member

Stacked on #56070 (cli-target-jobs) ("chore(ci): build each CLI target in its own job and sign macOS and Windows in parallel"), which is stacked on #55987 (release-runner-moves). Only the last commit belongs to this PR.

Summary

Each build-electron leg uploads all of packages/desktop/dist/* (unpacked app and builder debug files included) at deflate level 6: 769 files, ~1.3 GB and 64–105 s on macOS. publish uses only the top-level installers matched by packages/desktop/scripts/publish.ts's glob, plus the two Windows .exe for WinGet.

This PR changes only that upload step:

  • path: one pattern per extension in that glob (@actions/glob can't expand braces), with a comment pointing at publish.ts.
  • compression-level: 0: the installers are already compressed.
  • if-no-files-found: error: a leg matching nothing fails at upload, not in publish.

The latest-yml-<target> upload is unchanged.

Expected effect

All numbers are estimates from dev releases 38536124977 (2.0.29) and 38785024495 (2.0.30).

Leg Today: files, size, upload Shipped files, size Est. saving
macOS arm64 769, 1307 MB, 64–67 s 5, 782 MB ~37 s
macOS x64 (intel) 769, 1363 MB, 94–106 s 5, 817 MB ~55–60 s
linux-arm64 91, 946 MB, ~50 s 3, 671 MB ~21 s
linux-x64 91, 960 MB, 24–33 s 3, 687 MB ~11–15 s
windows-x64 98, 550 MB, 19–25 s 2, 237 MB ~13–18 s
windows-arm64 98, 535 MB, ~35 s 2, 226 MB ~21–23 s

Evidence

  • Same files. 2.0.29 and 2.0.30 each shipped the same 20 opencode-desktop-* files; each matches a new pattern and each pattern matches one.
  • Same root, same selection. Running the pinned upload-artifact (ea165f8d) search code offline on fake dist trees picked exactly 5/2/3 files with root packages/desktop/dist, and failed with "No files were found" when no installer existed. publish.ts's glob returns the same list for old and new inputs.
  • No other readers. Only publish downloads these artifacts.
  • Level 0 round-trips through download-artifact v4.3.0: zips, DMGs and .tar.gz came back byte-identical. Only an entry starting with PK\x07\x08 fails; no shipped format does.
  • Checks: actionlint, YAML parse and Prettier are clean.

Things to know

  • Keep the list in step with publish.ts. New risk: a change to its glob (or beta's upload.ts glob) must update this list, or that format silently stops shipping.
  • if-no-files-found: error only catches a leg with no matches. A single missing extension is caught as today: publish.ts throws for files listed in latest*.yml (12 of 20). The other 8 (.app.tar.gz and blockmaps) are unchecked, before and after this PR. A WinGet failure is only a warning.
  • Artifacts no longer hold the unpacked app or builder debug files. Use the installer to inspect the app.
  • Failures stop the release before anything ships, whether the upload matches nothing or extraction fails in publish.
  • Next merge of dev into beta (checked against origin/beta bd874f4): this hunk merges cleanly and keeps beta's if: github.ref_name != 'beta'. The only conflicts are the 3 publish.yml hunks and the build.ts hunk already in cli-target-jobs. Beta skips this step.
  • Possible follow-up: drop the macOS .app.tar.gz on dev, as beta does (about a third of each macOS upload). It changes what ships to R2, so it needs its own PR.

Verification

publish.yml can't run on this PR. On the first dev release dispatch:

  • Each opencode-desktop-* upload: "there will be 5 files uploaded" on macOS, 2 on Windows, 3 on Linux; no "least common ancestor" line; size ~780/820 MB macOS, ~230 MB Windows, ~670/690 MB Linux; step time ~25–30 s on macOS and linux-arm64.
  • publish: the download reports 6 artifacts in roughly 20–45 s; the desktop dry-run upload: and upload: lines list the same 20 names as 2.0.29/2.0.30; WinGet prepares Anomaly.OpenCode.Desktop.
  • Rollback: revert this commit.

Each build-electron leg uploaded all of packages/desktop/dist, including the unpacked
app folders and builder debug files, at deflate level 6. publish only ships the
top-level installers that packages/desktop/scripts/publish.ts globs, so upload just
those, uncompressed, and fail if a leg produced none.
@neriousy
neriousy force-pushed the desktop-release-files branch from 5d5aa4f to dcdfc31 Compare October 16, 2026 16:21

This branch has not been deployed

No deployments
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