Homebrew distribution and ad-hoc codesigning - #14
Merged
Conversation
…all docs - release.yml: on v* tags, builds the Tauri app bundle on macos-latest (no dev-token-store feature), verifies the ad-hoc signature, packages a .tar.gz + sha256, and publishes a GitHub release with gh. - tauri.conf.json: bundle.macOS.signingIdentity "-" so every build (local and CI) is ad-hoc signed the same way. - build-install.sh: assert the installed bundle carries an ad-hoc signature after building. - README: Homebrew cask install section with the --no-quarantine / not-notarized Gatekeeper caveat.
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.
Sets up Homebrew distribution and ad-hoc codesigning (no Apple Developer ID exists, so this is the best signing available without one).
What's here
.github/workflows/release.yml— tag-triggered (v*), runs onmacos-latest(Apple Silicon):tauri.conf.json's version,dev-token-storefeature (release builds use the encrypted token store),codesign --verify --deep --strict),Retune-<version>-aarch64.tar.gz+ a.sha256file,tauri.conf.json—bundle.macOS.signingIdentity: "-". Per the Tauri v2 macOS signing docs, the pseudo-identity-produces an ad-hoc signature; putting it in config (rather than theAPPLE_SIGNING_IDENTITYenv var) means local and CI builds are signed identically with one source of truth.scripts/build-install.sh— after building, asserts the bundle carries an ad-hoc signature (Signature=adhoc) and fails loudly if not.--no-quarantine/ not-notarized Gatekeeper caveat.Why .tar.gz instead of DMG
build-install.shalready skips locally, and a known source of CI headaches.app "Retune.app"stanza either way), but an unsigned, un-notarized DMG buys nothing: the drag-to-Applications UX is Homebrew's job, and the DMG itself would also be unsigned.Verified locally on aarch64: release-shaped build (
npx tauri build --bundles app, no dev features) produces a signed bundle:codesign --verify --deep --strictpasses, and the tarball layout (Retune.app/at root) matches the prepared cask inopen-cli-collective/homebrew-tap.Rollout sequence (after merge)
v0.1.0→ workflow publishes the release with the real sha256.Casks/retune.rbinopen-cli-collective/homebrew-tap(staged locally, unpushed — it can't land before the release exists becausebrew auditneeds a live URL).brew install --cask --no-quarantine open-cli-collective/tap/retune.