一尘不染

在Jenkins中运行XCodeBuild的代码签名错误

jenkins

[不重复类似的问题,如下面进一步解释的那样]

从Jenkins内部运行XCodeBuild时,出现代码签名错误,但可以从命令行或Xcode内部生成。

过去有几个人遇到过这个问题,他们的共同主题是Jenkins在启动时以守护程序用户身份运行,因此尝试访问系统钥匙串。人们应用的解决方案是将凭据复制到系统钥匙串,或者运行命令来设置要使用的钥匙串。

但是,就我而言,如果我查看活动管理器中的启动,该用户将以我登录到计算机上的用户身份显示,因此Jenkins应该以该用户身份而不是守护程序用户身份运行。

我尝试通过在运行XCodeBuild之前将此命令添加到Jenkins脚本来设置要使用的钥匙串

security list-keychains -s /Users/[user]/Library/Keychains/login.keychain

但这并不能解决问题。

我得到的错误是:

Code Sign error: The identity 'iPhone Developer: NNNNN (9TYX5WAM63)' doesn't match any valid, non-expired certificate/private key pair in your keychains"

因此,我尝试将凭据移至系统钥匙串,但现在在Jenkins中收到此错误,但在命令行中仍然可以:

Code Sign error: Provisioning profile 'F152C66E-B99A-47F6-B262-376CE4403D71' can't be found

另外,当我将凭据移至系统钥匙串时,我不再能够在XCOde内进行构建-与上面的顶部错误消息一样,我得到了相同的错误。

我还尝试编辑org.jenkins-ci.plist文件,以将用户设置为我以此身份登录到计算机上的用户,但这样做也没有效果。

在将Jenkins /Hudson用作iOS和Mac开发的持续集成时,缺少钥匙串中的证书和密钥

有什么想法我接下来可以尝试吗?


阅读 184

收藏
2020-07-25

共1个答案

一尘不染

我觉得对您来说,这是我们上次感到困惑的挑战。当我们为项目设置CI服务器时,就是这样做的。如果我没有记错(广泛),我们按照以下步骤操作:

1)设置Jenkins为Apple Dev帐户的开发人员

2)创建了专门针对Jenkins的证书和开发配置文件

3)在CI服务器上设置Jenkins用户,并从该用户的xcode删除任何以前的cert / prov配置文件

4)将Jenkins证书添加到AD-Hoc区域配置文件中(如果您尝试将.ipa分发到HockeyApp,则需要为此进行存档构建。)

5)进入xcode项目文件并删除对Provisioning Profiles的任何现有引用

6)下载并安装该用户的证书以及相应的Prov配置文件。

7)在构建之前,请解锁Jenkins用户钥匙串。仅当Jenkins用户不是运行xcode构建的用户时,才执行此操作。

以Jenkins用户身份登录时,验证Xcode在组织者中是否显示Prov配置文件有效。

我知道我的回答有些含糊,我的目的是有所帮助。这种类型的错误通常是由以下三种原因之一引起的。Xcode找不到配置文件,Xcode找不到证书或Xcode找到的配置文件多于一个配置文件(假定会产生其他错误,但并非总是如此),并且存在某种不匹配的情况。通常,重做Prov配置文件是最痛苦的解决方案。

祝你好运。您将解决它,这真是令人头疼!

2020-07-25