我在Mac Sierra上设置了Jenkins CI,使用Xcode 8.2自动签名构建iOS应用程序。使用Xcode作为开发人员构建时,一切运行良好。但是,使用xcodebuild的Jenkins失败了以下内容:
SecKey API returned: -25308, (null)/Users/Shared/Jenkins/Home/workspace/App/build/Build/Intermediates/ArchiveIntermediates/App/InstallationBuildProductsLocation/Applications/App.app/Frameworks/GTMSessionFetcher.framework: unknown error -1=ffffffffffffffff
我遵循了security / codesign in Sierra: Keychain ignores access control settings and UI-prompts for permission中的建议,但没有用。
我已尝试将私钥和证书放入系统密钥链,但无济于事。
如果我以Jenkins用户身份登录并手动运行codesign命令,我将永远允许"访问钥匙串,它反复运作。但是,由Jenkins CI调用的运行不会。 (Jenkins大师是Mac,我使用同样的Mac来构建。)
错误提到了CocoaPod GTMSessionFetcher。这与CocoaPods有关吗?
任何想法都会受到赞赏。
答案 0 :(得分:4)
我遇到了完全相同的问题,我很确定它与CocoaPods无关,这是一个代码问题。我做过的一些事情:
检查我没有重复的钥匙串条目。这个post对此非常有用。事实证明我有一个条目重复。
检查所有应用程序是否允许私钥,如here所述
尝试this(请注意,因为macOS Sierra login.keychain 已更改为 login.keychain-db ),这是第二个回答你提到的建议,但没有成功。
将私钥和证书移至系统密钥链(仅在登录密钥链上保留证书)。最后一步是使事情有效的步骤。
如果这没有帮助,您可以尝试在Jenkins作业中手动解锁登录密钥链(在我将密钥转移到系统密钥链之前,这对我有用):
node("macOS-sierra") {
.........
stage("Build"){
sh 'security unlock-keychain -p KEYCHAIN_PASS "/Users/YOUR-CI-USER/Library/Keychains/login.keychain-db" && fastlane beta'
}
您可以使用以下方法检查您的钥匙链:
$ security list-keychains