2014-10-20 17 views
18

我試圖運行詹金斯自動化xcodebuild聯編,但我遇到了錯誤不允許Xcode中,從詹金斯/ SSH協同設計錯誤 - 「用戶交互不允許」

用戶交互。退出碼1

我已經提到"User interaction is not allowed" trying to sign an OSX app using codesign和其他類似的線程 命令/ usr/bin中/協同設計失敗了,但沒有解決方案似乎正確地糾正錯誤。


以下是我已經嘗試過:

  • 我已經允許所有項目訪問鑰匙串,我還特意加入協同設計的「總是允許」列表(如在這裏完成https://stackoverflow.com/a/22637896

  • 我已設置鑰匙串不會自動鎖定超時,無論是通過Keychain Access的設置還是通過命令

    security set-keychain-settings -t 3600 -l <KEYCHAIN> 
    
  • 我已經打過電話

    codesign --sign <CODE SIGN IDENTITY> --force ... 
    

    項目編譯之前(更具體地說,該解決方案https://stackoverflow.com/a/20208104), 雖然這成功地構建了項目,我不認爲在編譯之前代碼簽名是正確的或可靠。 (編輯:從詹金斯運行時,這也失敗了)


這裏是命令我執行:

security unlock-keychain -p <PASSWORD> <KEYCHAIN> 
xcodebuild -scheme <SCHEME> -workspace <WORKSPACE> -derivedDataPath <BUILD DIRECTORY> -configuration <CONFIGURATION> "CONFIGURATION_BUILD_DIR=<BUILD DIRECTORY>" "CODE_SIGN_IDENTITY=<CODE SIGN ID>" "PROVISIONING_PROFILE=<PROVISIONING PROFILE>" clean build 

一些有趣的注意的是,建設項目在機器上使用上面的命令,但試圖通過ssh(和jenkins)運行完全相同的命令會導致錯誤。


預先感謝您的幫助!

+0

jenkins是否可以訪問'/ usr/bin/codesign'? – Opal 2014-10-21 05:23:10

+0

是的,它有訪問權限 – reyes20 2014-10-21 16:27:58

+0

沒有其他的想法:/前一段時間是開發iOS項目的CI工具和codesigning是一個噩夢。 – Opal 2014-10-21 16:30:56

回答

12

SSH不被蘋果公司的支持,因爲他們headless運行自動化構建,通過SSH所以運行可能是這裏的問題:

由LaunchDaemons提供的上下文不支持運行GUI 應用。 SSH服務和Jenkins的默認設置均爲 ,均以LaunchDaemons實現。在Xcode 5 的早期版本中,xcodebuild可以在此上下文中的iOS模擬器上運行測試,但 從來不是受支持的配置,並且您已經注意到 已不再適用於Xcode 6。

不像LaunchDaemons,LaunchAgents提供一個框架,你可以運行 GUI應用程序 - 如果用戶在時間登錄,與窗口 服務器/水族會話。將Jenkins配置從 作爲LaunchDaemon轉換爲LaunchAgent將避免報告的 問題。您也可以,或者通過製作一個LaunchAgent和手動 裝載/啓動是,或通過使用「launchctl提交」使用的launchd運行在iOS模擬器 從SSH會話測試。

您是否嘗試過使用網絡代理呢?

+0

花了近一個半小時,試圖讓我的構建腳本通過ssh'ing工作到我的構建服務器。檢查我的代碼,並通過Web UI運行腳本併成功構建...救了我,上帝知道還有多少次痛苦的嘗試。謝謝。 – Taz 2015-11-11 10:52:33

9

萬一有人錯過了它。在鏈接的問題的回答解決這個問題。基本上你需要運行security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN",我構建之前運行這和協同設計成功。

+0

爲我工作,這隻需要,如果你作爲我的服務運行 – Alon 2017-06-27 12:49:42

+0

它適用於我。 – keyOfVv 2017-09-07 03:10:24

3

安裝的XCode插件這裏:https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin

選擇解鎖鑰匙串並提供鑰匙鏈路徑的選項。例如$ {HOME} /Library/Keychains/login.keychain

確保您設置了$ HOME環境變量。從經驗來看,讓機器像開發人員一樣以用戶身份登錄就更容易。

6

將您的密鑰放入系統鑰匙串,而不是登錄/ iCloud/Local Items。

+0

這實際上是一個非常好的建議,因爲它不需要將密碼輸出到變量,也不需要找到正確的鑰匙串所在的位置。 – igraczech 2016-03-11 13:45:23

+0

這應該被選爲正確的答案 – 2016-05-28 11:49:47

1

我已經通過Jenkins Xcode插件解決了這個問題。我想查詢 解鎖鑰匙扣?

的Xcode - 代碼簽名& OS X鑰匙串選項

,使我的構建運行。

enter image description here

0

自動構建(詹金斯W /遠程SSH),其使用productsign,效果很好,直到我們從優勝美地升級,構建框塞拉利昂。

productsign [4065:51711]配置RSA簽名時出錯:不允許用戶交互。 (-25308)

我們嘗試過在SO上找到的不同解決方案,但都沒有工作。

最後,我固定它做以下幾點:

  1. 打開鑰匙串,去首
  2. 點擊「重置我的默認鑰匙串」
  3. 消息「操作不允許」或類似的節目了
    • 錯誤沒有任何意義,因爲用戶是管理員
    • 登錄鑰匙串被刪除,但不能重新創建。
  4. 註銷並重新登錄
    • 新的登錄鑰匙串出現
    • productsign再次工作(通過自動生成)

請注意我們的「開發者ID安裝:ACME,公司(12345ABCDE)'證書位於系統密鑰鏈中。