diff --git a/scripts/ci/compile-ios.sh b/scripts/ci/compile-ios.sh index bb18f27..d7ecaaa 100755 --- a/scripts/ci/compile-ios.sh +++ b/scripts/ci/compile-ios.sh @@ -37,6 +37,8 @@ fi WORK="$(mktemp -d)" cleanup() { + # 恢复默认搜索列表(构建期临时独占,见下)——失败路径也必须恢复 + security list-keychains -d user -s login.keychain-db 2>/dev/null || true security delete-keychain "$KEYCHAIN" 2>/dev/null || true rm -rf "$WORK" rm -f "$HOME/Library/MobileDevice/Provisioning Profiles/jiu-ci.mobileprovision" 2>/dev/null || true @@ -55,8 +57,11 @@ security import "$WORK/dist.p12" -k "$KEYCHAIN" \ -P "${IOS_DIST_CERT_PASSWORD:-}" -T /usr/bin/codesign -T /usr/bin/security # 允许 codesign 非交互访问私钥 security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PWD" "$KEYCHAIN" >/dev/null -# 把临时 keychain 加入搜索列表(保留默认 login keychain) -security list-keychains -d user -s "$KEYCHAIN" login.keychain-db +# 构建期独占搜索列表(fastlane 同款):只见临时 keychain,隔离本机其他项目的 +# 同名「Apple Distribution」证书(2026-07-07 事故:login 里另一项目的新证书被 +# xcodebuild 优先选中,与 Jiu App Store profile 不配对 → archive 失败)。 +# trap cleanup 恢复 login,失败路径也不遗留。 +security list-keychains -d user -s "$KEYCHAIN" # --- 2. 安装 provisioning profile --- PROFILES_DIR="$HOME/Library/MobileDevice/Provisioning Profiles"