【问题标题】:"ipa build" passes from the command line but fails on Jenkins (Shenzhen Xcode iOS app)“ipa build”从命令行传递,但在 Jenkins(深圳 Xcode iOS 应用程序)上失败
【发布时间】:2015-05-27 09:38:54
【问题描述】:

我正在通过命令行从 MyApp.xcodeproj 构建 MyApp.ipa,并且构建成功。我正在使用Shenzhen ruby​​ gem 从命令行构建应用程序。但是在 Jenkins 中构建失败并出现以下错误:

*** error: Couldn't codesign /Users/administrator/Library/Developer/Xcode/DerivedData///////MyApp.app/Frameworks/libswiftCore.dylib: codesign failed with exit code 1
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-stdlib-tool failed with exit code 1

** ARCHIVE FAILED **

以下构建命令失败:

CopySwiftLibs /Users/administrator/Library/Developer/Xcode/DerivedData///////MyApp.app

我怀疑该错误与项目签名有关。目前我正在通过命令行使用XSigning 对其进行签名,并且它从本地MacOS 机器上的命令行成功构建。但是,当我通过 Jenkins 运行完全相同的命令时,它会失败。

请帮忙。

【问题讨论】:

  • 我看到你已经成功了。您能否分享您的解决方案和重现的详细步骤?我已经解锁了我的钥匙串,但我不确定我应该在路径变量中放什么

标签: ios xcode command-line jenkins ipa


【解决方案1】:

假设您的 Jenkins 构建运行在您通过命令行测试的同一台机器上:

codesign 需要配置文件来签署 IPA。默认情况下,它们位于~/Library/MobileDevice/Provisioning Profiles

如您所见,~ 是用户的主目录,即/Users/user_name_here/。该目录的默认权限通常只允许该用户访问。

Jenkins 默认以jenkins 用户身份运行。您需要确保您的jenkins 用户有权访问配置文件所在的目录。或者,将配置文件移动到 jenkins 用户可以访问的另一个位置,然后修改您的构建工具以在那里查找它们。

如果您的 Jenkins 主/从节点不在您使用命令行测试的同一台 Mac 机器上,那么您也必须手动将配置文件复制到该机器上

【讨论】:

  • 我的 Jenkins 被配置为管理员。 Mac机器实际上是奴隶。通过更新 $path 和解锁钥匙串解决了这个问题。感谢您的建议。
【解决方案2】:

解决此问题的最佳方法:将您尝试使用的证书/密钥从“登录”移动到“钥匙串访问”中的“系统”。您无需一直解锁钥匙串。

【讨论】:

    【解决方案3】:

    我怀疑您的 $path 或其他环境变量有问题(这是一个常见问题,看起来像您的问题)。

    Jenkins 在“干净”的环境中执行其工作(没有任何环境变量)。

    【讨论】:

    • 感谢您的提示。更新了路径,但仍然失败。认为这是由于钥匙链被锁定。用“security unlock-keychain ...”解锁它。现在重新开始构建。希望会过去。
    • 在更新路径并解锁钥匙串后终于通过了。谢谢。
    • 你应该用完整的解决方案回答你自己的问题,并接受它(2天后)。
    猜你喜欢
    • 2014-09-20
    • 2012-01-21
    • 2015-02-16
    • 2014-08-18
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多