我認爲在導入之前,憑證插件的最新版本現在首先使用匹配的名稱刪除任何現有的鑰匙串,如下面的日誌輸出所示。
$ 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