除非用户登录,否则钥匙串不会从Jenkins脚本解锁

时间:2011-06-20 19:06:15

标签: xcode macos hudson jenkins keychain

我在OS X计算机上运行Jenkins CI服务器。服务器作为标准用户'john'运行,并通过运行launchctl启动。此服务器执行的操作之一是使用存储在钥匙串'xcode.keychain'中的密钥和证书构建XCode项目:

Jenkins(根据活动监视器在用户'john'下运行)在用户按下Web界面上的按钮时从脚本调用这些命令。

security default-keychain -s /Users/john/Library/Keychains/xcode.keychain
security unlock-keychain -p password /Users/john/Library/Keychains/xcode.keychain
xcodebuild ...

如果我碰巧通过UI以“john”身份登录服务器,那么当Jenkins调用这些命令时,钥匙串会正确解锁。但是,如果我没有登录,则xcode.keychain不会解锁并且构建失败。有什么想法吗?

4 个答案:

答案 0 :(得分:10)

我必须:

  1. 右键单击我的构建过程中的钥匙串中的私钥 正在尝试使用
  2. 点击“获取信息”
  3. 然后是“访问控制”选项卡。
  4. 您可以将特定应用(例如“codesign”)添加到应用列表中 允许访问该密钥,或者只允许从所有应用程序访问。
  5. 这为我解决了。

    这些评论中的更多信息: https://stackoverflow.com/a/12235462/544130 https://stackoverflow.com/a/14761060/544130

答案 1 :(得分:5)

在没有launchd的情况下运行Jenkins。我使用了以下命令:

sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"

答案 2 :(得分:5)

我最近偶然发现了同样的问题。

security list-keychains -s /Users/john/Library/Keychains/xcode.keychain可能会解决您的问题。如果有效,请告诉我。

最近我在那里找到了一个解决方案:Missing certificates and keys in the keychain while using Jenkins/Hudson as Continuous Integration for iOS and Mac development

答案 3 :(得分:0)

您可以尝试Jenkins.app,这是运行Jenkins的另一种方法。它在用户会话中运行Jenkins,因此Keychain应该不是问题。