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

31 macos xcode hudson keychain jenkins

我在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 ...
Run Code Online (Sandbox Code Playgroud)

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

Tay*_*tay 10

我不得不:

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

这为我解决了这个问题.

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


小智 5

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

sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"
Run Code Online (Sandbox Code Playgroud)


Jen*_*ohl 5

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

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

最近我在那里找到了一个解决方案:在使用Jenkins/Hudson作为iOS和Mac开发的持续集成时缺少钥匙串中的证书和密钥