Repository navigation
Conversation
Add a macOS job to the Release workflow that builds the menu-bar DMG, signs it with a Developer ID certificate held in a temporary keychain, notarises it with an App Store Connect API key, and hands the DMG and its checksum to the publish job. publish-github.sh attaches both when it creates the release and verifies their size and digest afterwards, because immutable releases cannot gain assets later. The new menu_dmg input defaults to true. Dry runs sign and notarise too, so they prove the Apple credentials before a live release. The local builder also accepts an API key instead of a Keychain profile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to The release workflow gains a notarised menu-bar DMG that is attached and verified at release creation. No concrete merge-blocking risk was identified. A dry run with the maintainer's Apple credentials is still advisable before the first live release. Pre-merge checks |
|
|
Parked: the maintainer has no Apple Developer membership for now, so there is no Developer ID certificate or notarisation key. Don't merge as is: |
Summary
Ships the menu-bar app as a notarised download from the
Releaseworkflow. Because GitHub Releases here are immutable, the DMG has to be attached when the release is created, so this adds a macOS job that runs before anything is published.menu-dmgjob (macOS,contents: read,releaseenvironment): checks out the verified commit and runsscripts/release/build-menu-dmg.sh. That script imports the Developer ID.p12into a temporary keychain, requires exactly one Developer ID Application identity, notarises with an App Store Connect API key, checks the DMG version matches the release, and deletes the keychain and key file on exit.publishnow needs[verify, menu-dmg]. It downloads the artifact before tagging, andpublish-github.shattaches the DMG and.sha256togh release create. After publication it verifies each asset's state, size and digest.menu_dmginput, defaulttrue. Dry runs sign and notarise too, so they prove the Apple credentials. Setting it tofalsereleases without a DMG, and that version can never gain one.scripts/macos/build-menu-dmg.shacceptsMENU_APP_NOTARY_KEY/_KEY_ID/_ISSUERas an alternative to a Keychain profile.macos/README.md"Publish a signed download" is now the maintainer setup: enrol, export the.p12, create the API key, and set fivereleaseenvironment secrets.Secrets reach only the build step. The workflow contract test checks this, along with the job permissions, the input default and the step ordering.
Not in this PR
macos/README.md.Test plan
make check(includes the newtest/release/menu-dmg-test.sh, extendedgithub-test.sh,menu-release-test.shandworkflow-contract-test.mjs)github-test.shMENU_APP_*secrets exist (needs the maintainer's Apple Developer account)🤖 Generated with Claude Code
Summary by CodeRabbit