在花了数小时和几天的时间解决此问题后,我发现了一个相当简单的解决方案。如上所述,在启动的配置中是否有不同的用户名并不重要:
<key>UserName</key><string>user</string>
缺少的证书和密钥必须位于系统密钥链(
/Library/Keychains/System.keychain)上。我设置了执行几个
securityshell调用的jenkins作业后,发现了这一点。有趣的是
securitylist-keychains:
+ security list-keychains "/Library/Keychains/System.keychain" "/Library/Keychains/applepushserviced.keychain" "/Library/Keychains/System.keychain"
这就是詹金斯将搜索证书和密钥的钥匙串,因此它们应该在那里。在我将证书移到那里之后,它就可以工作了。确保您还将“
Apple全球开发者关系证书颁发机构”证书复制到系统钥匙串,否则将显示
CSSMERR_TP_NOT_TRUSTED错误消息
presign。
也可以向注册更多的钥匙串
security list-keychains -s [path to additionalkeychains]。我还没有尝试过,但是像
security list-keychains -s$HOME/Library/Keychains/login.keychain在jenkins中执行预构建外壳程序之类的东西可能会起作用。
编辑: 我试图将用户钥匙串添加到搜索路径,
-s但我无法使其正常工作。因此,现在,我们必须将我们的证书和密钥复制到系统密钥链中。
。



