我认为在导入之前,凭证插件的最新版本现在首先使用匹配的名称删除任何现有的钥匙串,如下面的日志输出所示。
$ security delete-keychain jenkins-MyAppsBuildName-iOS
$ security create-keychain -p ******** jenkins-MyAppsBuildName-iOS
$ security unlock-keychain -p ******** jenkins-MyAppsBuildName-iOS
由于这个事实,我认为你不会再有第二次运行时出现重复钥匙串错误的问题。
只要找不到与供应配置文件有关的问题,请在execute shell命令中添加以下行并在jenkins上运行构建。
security list-keychains
看看控制台为特定的构建,你应该看到所有目前在外壳的范围钥匙扣的列表。
如果您没有看到“jenkins-MyAppsBuildName-iOS”作为列出的钥匙串,这就是为什么您有签名问题。由于钥匙串没有列出,它甚至从来没有被搜索过,找到正确的签名身份/配置文件。
解决方案:警告:这是哈克
我不是100%肯定,为什么发生这种情况,但是从其他线程这似乎是一个权限问题。
幸运的是,有一个简单的解决方法。
在执行shell命令添加以下内容:
security list-keychain -s jenkins-${JOB_NAME}
这将重置钥匙串列表,包括成功建设项目所需的钥匙串。
要验证这现在列出正确的钥匙链,你可以添加以下行到shell命令:
security list-keychain
security list-keychain -s jenkins-${JOB_NAME}
security list-keychain
现在与第二列表钥匙扣命令比较第一个列表,钥匙扣命令的输出在控制台。确保jenkin的构建钥匙串在第二个安全列表 - 钥匙串输出后列出。
警告:这将永久更改系统上的钥匙串列表,因此在构建完成后重置钥匙串可能是一个好主意。您可以通过在Jenkin的“系统配置”部分的xcode配置中设置默认的期望钥匙串值来实现此目的。完成后,请确保在Jenkins作业页面内的构建环境下勾选“在全局配置中定义的构建过程后还原OS X钥匙串”复选框。
附加信息:在我的例子中,我设定的钥匙串名单只包括从詹金斯产生的钥匙扣,但你可以决定还包括标准体系和登录钥匙串的通过修改该行,例如:
security list-keychain -s jenkins-${JOB_NAME} login.keychain System.keychain
关键词:詹金斯,iOS设备,从设备,节点,Xcode中,插件,凭证,.developerprofile
只是有一点补充:如果你的工作名称有像我做的空间(这通常是一个坏主意),你会需要将钥匙串名称放在引号中,例如'security list-keychain -s“jenkins - $ {JOB_NAME}”' – zbu 2015-08-05 07:13:41