Repository navigation
ci: the real signing import test carries the Developer ID G2 intermediate - #21151
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
…its .p12 The CI certificate secret's .p12 carries Apple's Developer ID G2 intermediate; signing then failed in import-apple-developer-id-intermediates.sh with "already in build.keychain" (main 38857402565). The throwaway identity now carries it too, so the real import test covers that path. Red before #21145 (run 38861491788), green on its fix (run 38864400339). Refs cmuxterm-hq#2053. Bead cx-yzoow.
3b6a91d to
9e51de6
Compare
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
…ady in the keychain Review findings on #21151. Refs cmuxterm-hq#2053. Bead cx-yzoow.
|
Correctness review (subagent): approve, with no defects. I added its two suggestions in 572ded6:
|
|
Merge receipt for |
…cx-q1lnl) 15 main commits since the last sync (ec21dd9). Full rename detection (merge.renameLimit=30000). Priority: main's signing commits. Signing (one version per script): - scripts/ci/signing-keychain.sh, scripts/import-apple-developer-id-intermediates.sh, scripts/ci/finalize-release.py, scripts/ci/publish-release-assets.py, tests/test_github_release_publication.py: identical on both sides after feat's ports (5f8d2ce, b0c33eb, fad7929, a2380e7); the .p12 + `-f pkcs12` import and the SHA-1 fingerprint check stay. - tests/test_signing_keychain_real_import.sh: main's version (manaflow-ai#21151: the G2 intermediate from the .p12 must be met in the keychain; openssl error text). signing-keychain-macos.yml: identical. - scripts/ci/notarize-nightly-dmg.sh, resume-nightly-notarization.sh, scripts/ci/smoke-dmg.sh: main's CMUX_DEFER_LAUNCH_SMOKES (manaflow-ai#21024) on feat's script. - .github/workflows/nightly.yml (manaflow-ai#21024, manaflow-ai#21049, manaflow-ai#21140): the signing job is split three ways: secret-free prepare-nightly-variant (helper, cmux-tui client, regressions, thinning, sidecar handshake; takes feat's build-nightly-app output), build-sign-notarize-nightly (runs no bundle code; smokes deferred), secret-free verify-signed-nightly (signed app, CLI, sidecar, SSH daemon contract, feat's 15 s crash-checking launch smoke, smoke-dmg.sh on the final DMG). Recovery keeps feat's find/recover jobs; recover defers smokes to a new secret-free verify-recovered-nightly-next. publish-nightly needs both verify jobs and publishes only tested digests. Literal Blacksmith labels on secret-holding jobs (incl. sign-release-notes). Promote guard (manaflow-ai#21049) merged without conflict. Feat's .publish-tooling recheck (manaflow-ai#21144 port), publish-by-id (manaflow-ai#21140, feat already had it), nightly-next notary pause/hold, signed-unnotarized zip, 20m wait, publish-nightly-identity-legacy and legacy-identity-target are kept. Not ported: main's CMUX_NOTARY_SUBMIT_ONLY async notarization (feat keeps its in-job wait + recovery); publish-nightly-identity-legacy defers its launch smokes and has no secret-free smoke of the re-signed NIGHTLY DMG yet (it re-signs the build verify-signed-nightly smoked). - .github/workflows/release.yml: feat's job (90 min, universal app only) with main's literal blacksmith-12vcpu-macos-26 signing label (manaflow-ai#21024); feat's single-appcast resume and MDM asset list (manaflow-ai#21140 resume). - tests/test_nightly_universal_build.sh: feat's in-job wait contract and pin-cmux-tui.sh resolver, main's prepare-nightly-variant job name. tests/test_nightly_next_recovery.py, test_nightly_cmux_tui_resolve.py, test_nightly_next_computer_use_helper.py, test_nightly_signed_unnotarized_artifact.py: updated for the new jobs. Other conflict choices: - 128 modify/delete in the legacy app, CLI, iOS/macOS legacy packages, cmuxTests, legacy resources and legacy docs: kept deleted. - cmux.xcodeproj/project.pbxproj: feat-cmux-next's side. - .github/test-determinism-allowlist.txt: feat's side (main's entries name deleted tests). - cmux-tui (manaflow-ai#20570, Cloud terminal cwd): mux.rs feat's split file; publish_resource_event (mux/journal.rs) now publishes pending terminal directories; terminal_directory.rs notifies with publish_journal_event and keeps feat's emit_terminal_tabs_changed; cmux-tui-platform platform.rs: case-insensitive kitty-shell-cwd scheme and the Windows drive slash strip ported into feat's existing parser. Main's new unit tests dropped. - cmux-browser-host JS, plans/cmux-next/browser-repl, tests/browser-parity: feat's side. manaflow-ai#18380 (browser repl hardening) NOT ported: feat has its own earlier port (cx-2y2, cx-p9mu, cx-wj2w); main's later version targets the WebKit/Swift host and conflicts in ~100 hunks; it needs a port lane gated by the browser-parity harness. Main's new unit tests, scenarios 40/41 and async-owner.js dropped. - CmuxNextDesign Localizable.xcstrings: feat's side (rename detection mapped main's legacy Resources/Localizable.xcstrings keys there). Not ported (legacy-only code paths): manaflow-ai#20346, manaflow-ai#21128, manaflow-ai#20354, manaflow-ai#18641, manaflow-ai#21135. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Follow-up to #21145 (cmuxterm-hq#2053). The real macOS import test (
tests/test_signing_keychain_real_import.sh, from #21142) now builds its throwaway.p12with the vendored Apple Developer ID G2 intermediate in the chain, as the CI certificate secret has. The realscripts/ci/signing-keychain.sh createthen runs the realscripts/import-apple-developer-id-intermediates.shagainst a keychain that already holds that intermediate. That is the path that failed in the first main nightly after #21043 (run 38857402565).No secret: the identity is self-signed and made in the job; the workflow has no environment and
contents: read.Testing
DeveloperIDG2CA.cer: already in cmux-real-import-test-1149.keychain, thenFAIL: signing-keychain.sh create failed.DeveloperIDG2CA is already in cmux-real-import-test-1191.keychain (SHA-1 5B45F61068B29FCC8FFFF1A7E99B78DA9E9C4635), then PASS.Changelog
none
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Makes the real macOS signing import test carry the vendored Apple Developer ID G2 intermediate in its throwaway
.p12, matching the CI certificate secret. This reproduces the nightly failure from #21043 where the intermediates step met the G2 intermediate already in the keychain, and the test now asserts it took that path so the fix is actually verified.Written for commit 572ded6. Summary will update on new commits.
Summary by CodeRabbit