Jenkins构建作业无法在钥匙串中找到项目

时间:2016-10-11 13:40:21

标签: android macos security jenkins keychain

我有一个jenkins工作,它将执行一个gradle脚本,从keychain中检索android存储和密钥。该脚本在我的本地计算机上运行良好,但我尝试将其添加到jenkins作业中,并且未能在钥匙串中找到该项目:

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

它尝试运行的命令是:security -q find-generic-password -a jenkins -gl storePassword

从终端运行此命令会按预期检索密码。

我认为问题在于jenkins作业在jenkins用户下运行的事实。我已经向jenkins用户尝试了su,我认为它只有系统密钥链 - 如果我security list-keychains它会出现System.keychain。我的商店和密码密码都在登录密钥链里面,我不认为jenkins用户有权访问?有什么建议如何纠正这个?我曾尝试通过安全措施创建钥匙串,但这并没有真正奏效。

1 个答案:

答案 0 :(得分:0)

以防这对某人有用:

1)使用keychain-access创建一个新的钥匙串。我们称之为'jenkins',例如 2)将钥匙串复制到jenkins库目录($HOME/Library/Keychains/jenkins.keychain
3)在chown jenkins:jenkins上运行jenkins.keychain 4)运行sudo su jenkins切换到jenkins用户 5)将jenkins.keychain添加到钥匙串列表security list-keychains -s ~/Library/Keychains/jenkins.keychain
6)向jenkins构建过程添加一个bash脚本调用以解锁keychain。理想情况下,调用应该使用掩码密码插件中存储在jenkins构建中的密码。像security unlock-keychain -p "${jenkins_keychain_password}" "$HOME/Library/Keychains/jenkins.keychain"

这样的东西

这是一个很好的指南,可以了解更多详情:http://www.egeek.me/2015/04/12/jenkins-setting-up-ios-code-signing/