我在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不会解锁并且构建失败。有什么想法吗?
答案 0 :(得分:10)
我必须:
这为我解决了。
这些评论中的更多信息: 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应该不是问题。