2016-10-04 100 views
0

在TFS 2015(「XPlat」)版本中,npm install步驟掛起,直到超時。已經嘗試了10,20和30分鐘的超時。`npm install`超時在TFS 2015 build |上依賴關係由TFS託管Git回收

npm install獲取在package.json文件中定義爲提交上下的引用,如本地依賴性,

"ui-core": "git+http://tfs:8080/tfs/DefaultCollection/etc/_git/ui-core" 

我相信這是那些造成問題的依賴,因爲有時當我登錄到構建服務器(作爲服務帳戶)並手動鍵入npm install(在超時構建的目錄中),Git Credential Manager會提示我進行身份驗證。但是,依賴關係不是可選的。

(無其他錯誤出現在事件日誌中,也不在構建日誌。)

我們使用TFS託管的Git,這需要域級別的身份驗證(Kerberos的)。這是在我們的大部分環境中由Git Credential Manager處理(有人建議使用winstore代替;請注意git-credential-managerwinstore的替代品,而wincred因TFS而不是選項)。但是,身份驗證也不是可選的(業務需求)。

此外,請注意:我們正在運行TFS 2015 Update 3,因此該更新解決的npm install問題可能不是原因(是的,所有構建代理已更新)。編輯:這裏有一個答案,建議使用SSH,我一般會全力支持SSH,但它已被刪除。我認爲在我們的情況下,問題是所有的開發人員都必須創建並上載SSH公鑰認證令牌。

有沒有其他人遇到過這個問題?有沒有簡單的解決方案,我沒有找到?我不知道任何其他憑證管理者會做得更好,我不知道爲什麼認證首先被丟棄(或者是因爲我錯過了某個黑客),並且缺少保留在手動更新的另一個共享上存儲庫的副本(不是更好!)我看不到一個好的解決方案。

+0

您可以嘗試將您的構建代理配置爲使用您用來安裝GCM的相同帳戶運行嗎? –

+0

不幸的是,沒有,因爲我將GCM作爲我的域用戶安裝,但構建代理無法使用這些權限運行。我可以嘗試用服務帳戶重新安裝'choco' git軟件包... –

+0

您的構建代理是否以服務或交互模式運行? –

回答

2

問題的基本(重新)聲明:TFS 2015構建涉及npm install未完成,因爲我配置的Git憑據管理器定期要求服務用戶重新進行身份驗證,以便訪問指定的存儲庫commit-ish

最簡單的解決方案:刪除Git憑據管理器並改爲使用store

> git config --global --unset credential.manager 
> git config credential.helper store 
> git clone http://my-tfs-machine:8080/tfs/DefaultCollection/TeamProject/_git/some-repo 
Username for etc.: domain\user 
Password for etc.: password 

...和瞧,那個特定的錯誤消失了。

請注意,這意味着passworduser是純文本格式存儲在某個硬盤上,如果不爲您的域名解決方案的工作,你必須找到一個不同的一。