当前位置: 首页 > 面试题库 >

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

壤驷骁
2023-03-14
问题内容

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

从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开发的持续集成时,缺少钥匙串中的证书和密钥

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


问题答案:

我觉得对您来说,这是我们上次感到困惑的挑战。当我们为项目设置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配置文件是最痛苦的解决方案。

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



 类似资料:
  • 问题内容: 摘要: 使用最新的安装程序(截至1.449-2012年3月9日),在OS X上设置Jenkins变得非常容易,但是,管理代码签名的过程仍然非常困难,没有简单的答案。 动机: 运行无头CI服务器,该服务器遵循在OS X上运行服务的常见最佳实践(此处以通俗的语言进行了解释)。 背景: 2009年10月12日- 如何使用Hudson使您的iPhone应用程序构建自动化 2011年6月15日-

  • 我在OSX el Captain上安装了Xcode 8。 我有一个在模拟器上运行的贴纸包。然而,当我在我身上建立它时,错误如下: 检查依赖关系 签名“贴纸包扩展”需要开发团队。在项目编辑器中选择开发团队。SDK “iOS 10.0”中的产品类型“应用扩展”需要代码签名 显示最近的错误仅签署“StickerPackExtension”需要开发团队。在项目编辑器中选择开发团队。 SDK “iOS 10

  • 问题内容: 随着Xcode 8的发布,Apple引入了一种管理签名配置的新方法。现在,您有两个选择和。 根据有关代码签名的WWDC 2016会议(WWDC 2016-401-Xcode应用程序签名的新增功能) ,当您选择签名时,Xcode将执行以下操作: 创建签名证书 创建和更新应用程序ID 创建和更新配置文件 但是根据苹果在那届会议上所说,它将被使用,并且将仅限于Xcode创建的配置文件。 当您

  • 代码签名是一种用来证明应用是由你创建的一种安全技术。 在macOS系统中,系统可以区分开应用的变更是偶然产生的,还是被恶意代码生成的。 在Windows系统中,如果程序没有代码签名证书,或者代码签名授信级别较低时,系统同样会将其列为可信程序,只是当用户运行该应用时,系统会显示安全提示。 确立授信级别的过程比较费时,因此最好提早开始着手代码签名的工作。 即使开发者可以发布一个未签名的应用程序,但是我

  • 代码签名是一种用来证明应用是由你创建的一种安全技术。 macOS 系统能通过代码签名检测对app的任何修改,包括意外修改和来自恶意代码的修改。 在Windows系统中,如果程序没有代码签名证书,或者代码签名授信级别较低时,系统同样会将其列为可信程序,只是当用户运行该应用时,系统会显示安全提示。 信任级别随着时间的推移构建,因此最好尽早开始代码签名。 即使开发者可以发布一个未签名的应用程序,但是我们

  • 问题内容: 每次我尝试运行此应用程序时,它都会生成OK并安装,但是一旦运行,该应用程序就会中断并显示以下错误消息: 我在这里和App Developer论坛上都看到过许多类似的帖子,但都没有人提供解释或有效的修复方法。 我试过了: 清洁和建筑 重新启动XCode 重新启动Mac 完全重置钥匙串 验证所有钥匙串证书信任设置都在“使用系统默认值”上 恢复出厂设置我的Mac 我的iOS设备似乎有问题。该