针对 Jenkins 遇到类似问题的人的更新:
如果您将 Mac 设置为通过 LaunchDaemons 启动 jenkins,则需要确保添加
<key>SessionCreate</key>
<true />
所以整个 ci.plist 看起来像这样:
<?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>Label</key>
<string>Jenkins</string>
<key>UserName</key>
<string>user</string>
<key>GroupName</key>
<string>staff</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-Xmx512m</string>
<string>-jar</string>
<string>/path/to/jenkins/jenkins.war</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>JENKINS_HOME</key>
<string>/path/to/jenkins/home</string>
</dict>
<key>SessionCreate</key>
<true />
</dict>
</plist>
我遇到了和上面很多人一样的问题。
具体来说,我在从 Jenkins shell 运行时遇到了这个问题
脚本我得到了相同的**不允许用户交互**错误。
从 ssh shell 运行时,我的脚本运行良好。
大多数人也看到的不同之处在于,如果你跑步
安全列表-钥匙串你会得到:
$ security list-keychain
"/Library/Keychains/System.keychain"
"/Library/Keychains/System.keychain"
但是在 ssh shell 中运行时,我会得到:
$ security list-keychain
"/Users/<i>user_account_name</i>/Library/Keychains/login.keychain"
"/Library/Keychains/System.keychain"
而且大多数人都会在用户中拥有他们所有的密钥/证书等
帐户钥匙串。就像一些人建议的那样,制作一个新的很容易
与用户密钥链不同的密钥链,并将其重新保存为
你的 XCode 签名的东西。我最终把我的放在这里:
/Library/Keychains/sysiphone.keychain
我认为问题在于我的设置(也可能是您的设置),
您在不同的安全首选项域中运行(系统
与用户)。最后 - 这是我如何让我的 sysiphone.keychain 显示
上:
$ sudo security list-keychains -d system -s "/Library/Keychains/sysiphone.keychain"
Password: *****
$ security list-keychains -d system
"/Library/Keychains/sysiphone.keychain"
...神奇的事情开始在 Jenkins 中构建。哇……那是
对我来说大约 4 个小时就白费了。叹息。