ios - 使用 Jenkins 构建 Xcode 项目会出现代码设计错误

标签 ios xcode macos unity3d jenkins

我正在尝试使用 Jenkins 构建 Xcode 项目。 Unity 引擎生成的 Xcode 项目。 我可以直接从 Xcode GUI 构建这个项目,但是当尝试通过 Jenkins 构建项目时,我在构建结束时遇到以下错误:

Signing Identity:     "iPhone Developer: MyName MySurname (XXXXXXXXXX)"
Provisioning Profile: "iOS Team Provisioning Profile: *"
                      (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX)

/usr/bin/codesign --force --sign 37DF6AF254E5A4856B1BA024D199DEE3CE596A58 --entitlements /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/myapplication.app.xcent --timestamp=none /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app
/Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app: errSecInternalComponent
Command CodeSign failed with a nonzero exit code

** BUILD FAILED **


The following build commands failed:
    CodeSign /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app
(1 failure)
Build step 'Xcode' marked build as failure
Finished: FAILURE

我尝试在终端中重现以下命令,它没有任何错误地唤醒了:

/usr/bin/codesign --force --sign 37DF6AF254E5A4856B1BA024D199DEE3CE596A58 --entitlements /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/myapplication.app.xcent --timestamp=none /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app

它两次询问我的密码(和在 Xcode 的 Jenkins 作业设置中指定的相同密码),并且没有任何错误地完成。

我用来签署项目的钥匙串(keychain)已解锁:security unlock-keychain login.keychain

问题是 - 以下行为的原因可能是什么?我该如何解决这个问题?

提前致谢!

最佳答案

Jenkins 正在通过 SSH 连接到盒子中,但未收到对您的钥匙串(keychain)的访问权限。 Jenkins 需要在执行构建之前解锁钥匙串(keychain)。看起来您已经了解如何通过密码提示解锁您的钥匙串(keychain)。您需要让 Jenkins 在没有提示的情况下执行解锁。

让 Jenkins 在您的构建命令之前运行以下命令:

security unlock-keychain -p <YourPassword> ~/Library/Keychains/login.keychain

如果您不想将密码存储在构建的明文脚本区域,Jenkins 提供了多种方法来存储 secret 并将它们作为变量检索。这是一篇关于这样做的体面的文章:https://support.cloudbees.com/hc/en-us/articles/203802500-Injecting-Secrets-into-Jenkins-Build-Jobs

或者:

security unlock-keychain -p `cat ~/.file_with_your_password` ~/Library/Keychains/login.keychain 

关于ios - 使用 Jenkins 构建 Xcode 项目会出现代码设计错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53515039/

相关文章:

ios - 如何检查应用程序/项目中是否存在特定的 UIViewController

xcode - Xcode 中的 Vi 键

linux - macOS 和 Linux 上 get rusage.maxrss 的奇怪值

macos - 无法使用 mongo 命令,显示在 mac 上找不到命令

ios - 在WebView上加载FTP服务器中存储的图像/文件

ios - 带按钮的 CustomAnnotationView

ios - iOS 上的 Ionic 应用程序需要关闭 Safari 设置 "prevent cross-site tracking"

objective-c - clang:错误:链接器命令失败,退出代码为 1 - 找不到库

ios - 在 swift-ObjC 中访问扩展中的静态变量

iphone - 将应用程序静态链接到我自己的自定义 obj-c 运行时有多简单?