ci(release): publish macOS desktop assets#150
Open
fettpl wants to merge 2 commits 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.
Summary
Addresses #147 by wiring stable releases to build and attach macOS desktop assets.
This PR is stacked on #149 because the release asset filenames and app metadata need semantic-release's computed version before
desktop:distruns. Once #149 is merged, this branch should be rebased so this PR only contains the macOS asset publishing changes.Changes
macos-latestso Electron Builder can produce macOS DMG/ZIP artifacts.CSC_LINK,CSC_KEY_PASSWORD,APPLE_ID,APPLE_APP_SPECIFIC_PASSWORD, andAPPLE_TEAM_ID.npm --prefix frontend run desktop:distafter applying the semantic-release version.latest-mac.ymlbefore publishing assets.@semantic-release/githubto attach the DMG, ZIP, blockmaps, and update metadata to the GitHub Release.CONTRIBUTING.md.Owner-Pending Steps
@0xSero needs to configure the repository secrets before this can publish usable stable artifacts:
CSC_LINKCSC_KEY_PASSWORDAPPLE_IDAPPLE_APP_SPECIFIC_PASSWORDAPPLE_TEAM_IDThe certificate in
CSC_LINKalso needs to match the configured Electron Builder identity, currentlysherif cherfa (TZ447KHNZL), or the identity/config should be adjusted before release.After the first release run, the owner or maintainer should verify the produced DMG/ZIP with
codesign,spctl, and a first-run launch on a clean macOS install path. That final artifact validation is what unblocks the Homebrew cask PR.Test Plan
node --test scripts/test-validate-desktop-release-env.mjsfailed beforescripts/validate-desktop-release-env.mjsexisted.node --test scripts/test-verify-desktop-release-assets.mjsfailed beforescripts/verify-desktop-release-assets.mjsexisted.scripts/test-verify-desktop-release-assets.mjsfail until blockmap checks were implemented.npm run test:release-assetsnpm run test:release-versiongit diff --check --cachednode scripts/validate-desktop-release-env.mjsexits 1 without the owner secrets and reports all required missing env vars.node -e 'const c=require("./release.config.cjs"); const gh=c.plugins.find((p)=>Array.isArray(p)&&p[0]==="@semantic-release/github"); console.log(JSON.stringify({branches:c.branches, githubAssetCount:gh?.[1]?.assets?.length, prepare:c.plugins.find((p)=>Array.isArray(p)&&p[0]==="@semantic-release/exec")?.[1]?.prepareCmd.includes("desktop:dist")}, null, 2))'npm run check:structurenpm run check:controllernpm run check:clinpm --prefix frontend run check:qualitynpm --prefix frontend run check:qualitysuccessfully.Known unrelated check state:
npm run check:contractscurrently fails onmainbecauseAggregatedSessionis exported in bothfrontend/src/app/api/agent/sessions/all/route.tsandfrontend/src/features/agent/session-contracts.ts.AI Assistance Disclosure
AI assistance was used to inspect the release workflow, draft the implementation, write focused tests, run validation commands, and prepare this PR body. The code and command output were reviewed before submission.