【问题标题】:Jenkins iOS builds on Mac Sierra failing during xcodebuild 8.2 code signing (SecKey API returned -25308)Jenkins iOS 在 Mac Sierra 上构建在 xcodebuild 8.2 代码签名期间失败(SecKey API 返回 -25308)
【发布时间】:2017-02-12 08:36:31
【问题描述】:

我在 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 master是Mac,我用的是同一台Mac来构建。)

错误是提到 CocoaPod GTMSessionFetcher。这和 CocoaPods 有关系吗?

任何想法都将不胜感激。

【问题讨论】:

    标签: jenkins xcodebuild codesign


    【解决方案1】:

    我遇到了完全相同的问题,我很确定这与 CocoaPods 无关,这是一个代码签名问题。我做过的一些事情:

    1. 检查我没有重复的钥匙串条目。这个post 对此很有用。原来我有一个条目重复。

    2. 检查是否允许所有应用程序使用私钥,如here 所述

    3. 尝试this(请注意,由于 macOS Sierra login.keychain 已更改为 login.keychain-db),这是第二个答案你提到的建议,但没有奏效。

    4. 将私钥和证书移至系统钥匙串(仅将证书留在登录钥匙串上)。最后一步是让事情顺利进行的一步。

    如果这没有帮助,您可以尝试在您的 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
    

    【讨论】:

    • 2.为我解决了 => 代码设计 - 总是很有趣 ;-)
    • 最后,我有一个重复的证书。全部删除并重新添加后,它又可以工作了!非常感谢所有这些提示...非常有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多