gpt4 book ai didi

ios - 无法使用 Jenkins 签署 iOS 构建

转载 作者:技术小花猫 更新时间:2023-10-29 10:07:34 25 4
gpt4 key购买 nike

我们的 Jenkins CI 构建服务器设置在运行 OSX Lion (10.7.3) 的 Mac Mini 上,我无法让它签署 iOS 构建以便将它们上传到 TestFlight。

该进程以名为 jenkins 的普通用户身份运行,并在启动时使用 launchd 启动。 (外部世界无法访问该机器,因此在普通用户帐户下运行它不应该有任何安全问题。)

这里是 jenkins 控制台输出的错误:

[workspace] $ /usr/bin/xcodebuild -target iMobileStCloud -configuration Release clean build
=== CLEAN NATIVE TARGET MyApp OF PROJECT MyProject WITH CONFIGURATION Release ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Distribution' doesn't match any valid certificate/private key pair in the default keychain

部分问题似乎是当进程从 launchd 启动时只有系统钥匙串(keychain)可用。我在构建过程中添加了一个脚本来列出钥匙串(keychain):

[workspace] $ /bin/sh -xe /var/folders/1y/1q3st_ss58z9ffj4dwbkdw8r0000gt/T/hudson8514187812830984272.sh
+ /usr/bin/security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/applepushserviced.keychain"
"/Library/Keychains/System.keychain"
+ /usr/bin/security find-identity

我找到了两个解决方法,但没有一个真正可行:

  1. 如果我们登录到服务器并在每次机器重启时重新启动 launchd 进程,那么 jenkins 就能够加载登录钥匙串(keychain)并访问用于签名的证书:

    sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
    sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
  2. 我们可以将证书添加到系统钥匙串(keychain),但这意味着我们不能使用这台机器来构建我们的应用商店分发版本。 (Xcode 不喜欢系统钥匙串(keychain))。

有没有其他人找到任何其他可行的解决方法?除了 launchd 之外,还有其他东西可以用来在 OSX 上启动时运行进程吗?

最佳答案

我通过将 SessionCreate=true 添加到我的 org.jenkins-ci.plist 文件中解决了这个问题。此调用初始化安全框架。

来源:http://developer.apple.com/library/mac/#technotes/tn2083/_index.html

在下面查看我的完整内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>JENKINS_HOME</key>
<string>/Users/Shared/Jenkins/Home</string>
</dict>
<key>GroupName</key>
<string>daemon</string>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.jenkins-ci</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>jenkins</string>
<key>SessionCreate</key>
<true/>
</dict>
</plist>

关于ios - 无法使用 Jenkins 签署 iOS 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com