ci: normalize Apple signing identity imports - #224
Merged
Conversation
0xSero
commented
Aug 5, 2026
0xSero
left a comment
Owner
Author
There was a problem hiding this comment.
Self-review complete: no blocking findings.
Review covered the exact failure boundary and adjacent manual-signing inputs:
- the P12 password stays in an environment variable and is never placed on an OpenSSL command line;
- the extracted private key is created with owner-only permissions and removed by an EXIT trap;
- the disposable preflight Keychain must expose at least one valid codesigning identity, so an importable-but-incomplete certificate cannot pass;
- standalone TestFlight now validates and installs the app, live activity, watch app, and watch complications profiles required by manual signing;
- Mobile Release and standalone TestFlight use the same import helper, eliminating drift.
Local macOS integration testing imported a generated key/certificate through the helper into a disposable Keychain, resolved the certificate, and verified missing password inputs fail. Bash syntax, ShellCheck, YAML parsing, Actionlint, and diff checks pass.
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.
Purpose
Make Apple release preflight exercise the same macOS Keychain surface used by archive jobs, and make the standalone TestFlight lane complete its manual signing inputs.
Root cause
Run 30951914596 passed OpenSSL P12 validation and completed the 82-minute native release build, then macOS Keychain rejected the P12 with
SecKeychainItemImport: MAC verification failed during PKCS12 import.OpenSSL can verify and extract the identity, while Keychain can import the extracted PEM. The failure is therefore a PKCS#12 import-compatibility boundary, not a bad certificate or missing private key.
The same review found that the standalone lane omitted the Watch and Watch Complications provisioning profiles required by its manual signing mode.
Changes
Verification
bash -nand ShellCheck passgit diff --check