与 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您会得到:
$ 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"
......神奇的事情开始在詹金斯建立。哇......这对我来说大约是 4 小时。叹。