您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在将Jenkins / Hudson用作iOS和Mac开发的持续集成时,缺少钥匙串中的证书和密钥

在将Jenkins / Hudson用作iOS和Mac开发的持续集成时,缺少钥匙串中的证书和密钥

在花了数小时和几天的时间解决此问题后,我发现了一个相当简单的解决方案。如上所述,在启动的配置中是否有不同的用户名并不重要:

<key>UserName</key>
<string>user</string>

缺少的证书和密钥必须位于系统密钥链(/Library/Keychains/System.keychain)上。我设置了执行几个securityshell调用的jenkins作业后,发现了这一点。有趣的是security list-keychains

+ security list-keychains
    "/Library/Keychains/System.keychain"
    "/Library/Keychains/applepushserviced.keychain"
    "/Library/Keychains/System.keychain"

这就是詹金斯将搜索证书和密钥的钥匙串,因此它们应该在那里。在我将证书移到那里之后,它就可以工作了。确保您还将“ Apple全球开发者关系证书颁发机构”证书复制到系统钥匙串,否则将显示CSSMERR_TP_NOT_TRUSTED错误消息codesign

也可以向注册更多的钥匙串security list-keychains -s [path to additional keychains]。我还没有尝试过,但是像security list-keychains -s $HOME/Library/Keychains/login.keychain在jenkins中执行预构建外壳程序之类的东西可能会起作用。

我试图将用户钥匙串添加搜索路径,-s但我无法使其正常工作。因此,现在,我们必须将我们的证书和密钥复制到系统密钥链中。

我找到了一个解决方案,可以让我为Jenkins用户访问常规的钥匙串。

除了按照接受的答案在plist中指定UserName元素外,获取在UserName中指定的用户的普通钥匙串的权限的技巧还在于在plist文件添加一个值为trueSessionCreate元素-/ Library /launchdaemons / org.jenkins-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>EnvironmentVariables</key>
        <dict>
                <key>JENKINS_HOME</key>
                <string>/Users/Shared/Jenkins/Home</string>
        </dict>
        <key>GroupName</key>
        <string>wheel</string>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>org.jenkins-ci</string>
        <key>ProgramArguments</key>
        <array>
                <string>/bin/bash</string>
                <string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>UserName</key>
        <string>jenkins</string>
        <key>SessionCreate</key>
        <true />
</dict>

然后重新启动守护程序,并尝试在Jenkins中运行一个调用安全性列表钥匙串的作业-您应该不再将System.keychain视为唯一条目,而是常规登录名和您可能已添加到该钥匙串列表中的任何自定义钥匙串。 “詹金斯”用户

我现在正在使用Jenkins构建服务器上自定义钥匙串的代码签名证书-我的系统钥匙串中未安装任何证书或钥匙。

其他 2022/1/1 18:17:07 有536人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶