xcodebuild 通过 Jenkins 失败

Posted

技术标签:

【中文标题】xcodebuild 通过 Jenkins 失败【英文标题】:xcodebuild fails through Jenkins 【发布时间】:2015-05-07 14:43:44 【问题描述】:

我们一直在通过 Jenkins 进行 CI 构建。我没有设置 Jenkins,因此无法回答有关其设置方式的问题。

我们正在添加一个 WatchKit 扩展。我们正在按照这些步骤https://developer.apple.com/library/mac/qa/qa1814/_index.html 从指定配置文件切换到自动切换。

构建命令通过 Jenkins 失败,但如果我从命令行运行该命令,它就可以工作。我认为两者都使用相同的用户。分发证书在登录钥匙串和系统钥匙串中。

我们的命令是

xcodebuild -configuration Release -target "mobile" -sdk "iphoneos8.3" -scheme "mobile" clean archive

对于每个扩展程序和应用程序,我们得到的错误是这样的:

Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “XXXXXXXXXX” were found.
CodeSign error: code signing is required for product type 'App Extension' in SDK 'ios 8.3'

关于如何修复或排除此错误的任何建议?

【问题讨论】:

为了从命令行成功运行,您是从 Jenkins 机器还是从本地机器运行 xcodebuild 命令?如果它们是两台不同的机器,则很可能证书和配置文件包含 WatchKit 扩展应用程序 ID。另外,iOS 构建是否曾经在 Jenkins 实例上运行过? xcodebuild 命令可通过命令行在构建服务器上运行,但不能在 Jenkins 作业运行的脚本中运行。破坏我们的 Jenkins 构建的变化是我们曾经在我们的项目文件中说要使用哪个配置文件。一位 Apple 工程师告诉我,这是旧方法,而新方法是只使用 Automatic。 (请参阅技术问答 QA1814)使用自动中断 Jenkins 构建;我通过回到旧方式来“修复”它。但由于不使用自动,我在构建用于测试 Apple Watch 扩展的开发版本时遇到错误。 好的,最近改用自动,但我们没有做 Apple Watch。您确实需要确保在构建机器和开发者 Mac 上都安装了相同的证书和配置文件。我们通过制作开发人员可以运行的脚本来保持配置文件同步,从而解决了很多问题。 它在构建服务器上工作,只是在运行 Jenkins 作业时不起作用。 您确定从命令行运行的命令与 Jenkins 作业相同。您需要查看 Jenkins 命令控制台输出以查看确切的 xcodebuild 命令。每个的构建配置是否相同?另外,Jenkins 是否在不同的用户 ID 下运行?如果是这样,这可能会导致问题,因为不同的用户帐户有不同的钥匙串。 【参考方案1】:

尝试在钥匙串中移动所需的证书。将它们从 Login 移至 System

【讨论】:

【参考方案2】:

尝试添加 Jenkins 配置文件管理插件并添加 prov,然后使用 XCBuild 进行编译。

【讨论】:

怎么做?【参考方案3】:

当我通过Execute Shell 执行以下命令时,我可以运行xcodebuild

security unlock-keychain -p $OSPASSWORD ~/Library/Keychains/login.keychain-db && xcodebuild -scheme $XCODE_SCHEME -sdk $XCODE_SDK -archivePath \"build\" -configuration Release archive

希望对你有帮助。

【讨论】:

以上是关于xcodebuild 通过 Jenkins 失败的主要内容,如果未能解决你的问题,请参考以下文章

从 Jenkins 运行时 xcodebuild 失败(在终端中工作)

重试失败的 xcodebuild 测试

Jenkins - Xcode 构建工作代码设计失败

xcodebuild 无法通过 Jenkins 启动“/Applications/Xcode.app/Contents/Developer/Tools/otest”

Jenkins,xcodebuild -> JUnit-Tests with Appium?

Jenkins 中的 XcodeBuild 框架出现错误