Skip to content

ci(macos): read the signing identity from the keychain - #11

Closed
tcpreplay-dev wants to merge 1 commit into
mainfrom
ci/macos-signing-identity-and-fork-fallback
Closed

tcpreplay-dev wants to merge 1 commit into
mainfrom
ci/macos-signing-identity-and-fork-fallback

Conversation

@tcpreplay-dev

@tcpreplay-dev tcpreplay-dev commented Sep 2, 2026 •

Copy link
Copy Markdown
Owner

Why

The signing identity was one person's name. "Developer ID Application: Michael Richard Garcia ($APPLE_TEAM_ID)" appeared in five codesign calls. That common name comes from whoever owns the certificate, so the string only matches one Apple account — anyone supplying their own valid credentials (a fork, a second maintainer, a renamed organization) gets no identity found even with every secret set correctly.

What changed

The import step already ran security find-identity for its log. Its output is now captured into SIGN_IDENTITY and used by every codesign call. The keychain is created fresh two commands earlier and holds exactly one codesigning identity, so the match is unambiguous; an empty capture aborts with a clear message rather than letting a later codesign fail obscurely.

APPLE_TEAM_ID is no longer read anywhere — it existed only to interpolate into that hardcoded name. notarytool authenticates with the App Store Connect key and issuer, untouched here. The secret can stay set; nothing consumes it.

What did not change

Signing stays mandatory. A build without credentials still fails at certificate import, exactly as before. No unsigned fallback, no conditional signing steps.

Testing

  • Workflow parses as YAML
  • The sed extracting the identity was checked against real find-identity output shapes, including an organization name containing a comma and periods
  • Not exercised end-to-end with live credentials — that needs Apple secrets on the repo

🤖 Generated with Claude Code

@tcpreplay-dev
tcpreplay-dev force-pushed the ci/macos-signing-identity-and-fork-fallback branch from 80041cb to b75f2e9 Compare September 2, 2026 03:01
@tcpreplay-dev tcpreplay-dev changed the title ci(macos): read the signing identity from the keychain and allow unsigned builds ci(macos): read the signing identity from the keychain Sep 2, 2026
The identity was spelled out as "Developer ID Application: Michael Richard
Garcia ($APPLE_TEAM_ID)" in five codesign invocations. That common name comes
from whoever owns the certificate, so the string only ever matches one Apple
account: a contributor supplying their own valid credentials gets "no identity
found", and a renamed organization would break the release path without a line
of code changing.

The import step already runs find-identity for its log. Its output is now
captured and reused. The keychain is created fresh two commands earlier and
holds exactly one codesigning identity, so the match is unambiguous, and an
empty capture aborts rather than letting a later codesign fail obscurely.

APPLE_TEAM_ID is no longer read anywhere: it existed only to interpolate into
that hardcoded name. notarytool authenticates with the App Store Connect key
and issuer, which are unchanged. The secret can stay set; nothing consumes it.

Signing remains mandatory. A build without credentials still fails at
certificate import, as before.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@tcpreplay-dev
tcpreplay-dev force-pushed the ci/macos-signing-identity-and-fork-fallback branch from b75f2e9 to 6760544 Compare September 2, 2026 03:29
@tcpreplay-dev

Copy link
Copy Markdown
Owner Author

Closing .. I won't be signing this repo - this is reference info only.

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