2017-05-08 64 views
0

我在我的項目上設置了CI,而且我無法安裝某些DLL。設置如下:repo位於TFSGIT 2015服務器上。我在虛擬機上建立了一個構建服務器(代理)。當代碼簽入時,構建服務器將構建,運行測試等。構建失敗,因爲找不到一些內部程序包/ DLL(位於不同的TFS 2010服務器上)。如何在TFS上設置CI/CD - 導入依賴關係?

我的問題是:什麼是解決這個問題的最好方法?我想粗略的方法是簡單地將DLL添加到回購站,但我想知道是否有預構建步驟,我可以從TFS 2010服務器導入DLL。一個簡單的電源shell腳本會這樣做嗎?

我不熟悉微軟的棧,所以任何指導/建議,將不勝感激。謝謝。

回答

2

有一對夫婦的方式來處理這個問題,你可以:

  1. 創建的您正在使用的功能的NuGet包,並在內部託管此。這裏的優勢在於,您從CICD的角度以適當的構建方式進行操作,並且維護適當的版本,以便將來可以確保您可以重建版本的確切實例。當您執行NUGET RESTORE步驟時,您可以簡單地添加參數:-source

  2. (假設你的遠程TFS是不存儲版本建立的這些)用生成步驟將這些文件複製出來的遠程服務器TFS成一個版本系統,應用版本的詳細信息作爲元數據。再一次,這裏的擔憂是能夠充分確保您可以在給定時間內有效回滾。

  3. 使用Powershell從您的TFS服務器獲取特定的構建版本工件,以下是獲取最新版本的示例腳本。如果你的DLL項目利用構建,你可以使用它 - 這應該是微不足道的修改,以獲取特定的構建。我會親自通過一些構建變量來做到這一點。這裏最值得注意的是「DropLocation」,它將成爲Artifact的文件放置。 Mike Poulson: Get last known good build via Powershell

  4. 直接使用Powershell腳本從構建腳本中的其他TFS複製數據。至少,將其保存在工件中將足以最小化回滾,但我希望確保我可以向後建立,特別是對於大型項目。以防萬一您的工件存儲發生嚴重問題。這個答案可以幫助你:Copy files from bfs version control to directory 還有PowerShell工具來幫助你做到這一點。

有可能有無數的方法來解決這個問題,但我的建議是退後一步,並設計正確的方式;在這種情況下,您需要確保是否發生遠程構建並創建依賴工件,您是否正確管理它們並捕獲它們與特定構建的關係。這就是爲什麼我仍然建議使用你自己的NUGET飼料。

+0

哇。非常感謝。不能要求更好的答案!對於我們的迫切需求(我試圖給出所有這些的概念證明以獲得管理),#2將起作用。據推測,這是構建定義中預構建步驟的一部分?假設一切順利#1絕對是一條路,因爲如果我們需要返回到特定版本,版本控制將爲我們團隊提供精確的數據。再次感謝。 – jrDeveloper