【发布时间】: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 下运行?如果是这样,这可能会导致问题,因为不同的用户帐户有不同的钥匙串。
标签: xcode jenkins ios-provisioning