未找到匹配iOS Development签名证书,GitLab Runner运行xcodebuild报错如何解决
No signing certificate "" found: No "iOS Development" signing certificate matching team ID " " with a private key was found
可行解决方案
校验GitLab Runner的钥匙串权限与证书导入状态
- CI环境下GitLab Runner默认以独立的gitlab-runner用户运行,仅将证书导入到你个人登录用户的钥匙串无法被Runner识别
- 需要将包含私钥的.p12格式证书导入到Runner执行用户的钥匙串中,导入前先执行命令解锁钥匙串避免权限拦截:
# 解锁当前用户钥匙串 security unlock-keychain -p <你的钥匙串密码> ~/Library/Keychains/login.keychain-db # 导入p12证书,授权所有应用访问 security import <你的p12证书本地路径> -P <p12文件导出密码> -A -t cert -f pkcs12 -k ~/Library/Keychains/login.keychain-db - 导入完成后执行
security find-identity -v -p codesigning,确认输出列表中存在你所使用的iOS Development证书
核对描述文件与证书的匹配关系
- 项目使用的描述文件必须和当前签名证书、Team ID、测试设备UDID绑定,你需要将对应描述文件放到Runner用户的
~/Library/MobileDevice/Provisioning Profiles目录下 - 导出p12证书时必须同时选中证书与对应的私钥一起导出,仅导出公钥.cer文件会导致私钥缺失触发报错
- 项目使用的描述文件必须和当前签名证书、Team ID、测试设备UDID绑定,你需要将对应描述文件放到Runner用户的
给xcodebuild命令显式指定签名参数
避免xcode自动匹配签名配置失败,在原有命令基础上补充签名参数:xcodebuild -project Unity-iPhone.xcodeproj \ -scheme Unity-iPhone \ -archivePath ./dist \ CODE_SIGN_IDENTITY="iPhone Developer" \ DEVELOPMENT_TEAM="<你的实际Team ID>" \ PROVISIONING_PROFILE_SPECIFIER="<你的描述文件完整名称>"关闭Xcode项目的自动签名配置
Unity导出Xcode项目时默认开启的自动签名在CI环境中无法正常工作,你可以通过Unity的PostProcessBuild打包后处理脚本,强制关闭自动签名、写死签名身份、Team ID与描述文件配置,避免Xcode项目签名配置混乱
内容的提问来源于stack exchange,提问作者Youssef
相关产品推荐
相关产品推荐

