2014-01-15 55 views
2

我有一個自定義的構建過程,它使用NAnt,Maven Ivy,CruiseControl.Net和其他一些組件來管理依賴項並處理我們項目的持續集成構建過程。它的運作非常好,完全誠實。Visual Studio Team Services如何管理自定義或內部依賴關係?

對於我們來說,一個相對重要的部分是我們能夠從我們共享的Ivy存儲庫中獲取任何給定依賴項(.dll,.xml,.whatever)的精確版本,這對我們的工作來說絕對是極爲重要的,由於不同的應用程序因不同的原因/目的需要特定庫的不同版本。

但是 - 我目前正在研究Visual Studio Team Services(http://visualstudio.com),並正在嘗試沿代碼簽入/自動構建過程的方式,除非我無法看到我在哪裏或如何管理我的外部/第三方依賴。

使用Maven的常春藤依賴管理/配置工具,這個過程非常完美無瑕,並且對它有如此多的信心 - 與此相對應的團隊服務是什麼?

經過幾個小時的搜索後,我的最佳調查結果似乎表明NuGet可用於此目的,併爲我的每個依賴項創建自定義包,但隨後由Team Services持續集成構建過程在何處/如何存儲和訪問這些包?我可以將我的軟件包存儲在Azure中的NuGet服務器中嗎?我能確定這隻能由我自己使用嗎?

,我已經發現迄今最好的SO職位是:

...但這些仍然留下我沒有答案,也許我是對的偏離軌道與此,但需要了解TFS將遵循的依賴性管理過程。

+1

TFS現在支持Maven包管理: https://stackoverflow.com/a/44119042/7862382 –

回答

1

TFS和Visual Studio沒有內置類似Maven的常春藤依賴管理工具。 NuGet確實是最接近您的,但它都是在解決方案級配置並簽入源代碼管理。你甚至需要運行你自己的NuGet服務器,因爲TFS不附帶一個(除非你想把它們推送到一個你通常不需要的公共存儲庫)。

有許多的第三方解決方案,但不同的現成功能簡單地歸結爲:

  • 檢查相關源代碼控制(可以更改構建過程模板如果您希望能夠在不更改項目文件的情況下更改依賴項版本,則可以使用Workspace映射來映射特定版本的依賴關係到構建中的特定文件夾
  • 配置您的構建以獲取NuGet包並配置您自己的NuGet服務器,包可以找到。 TFS 2013和Visual Studio Online現在可以自動獲取構建中的NuGet依賴關係。下載的軟件包仍然存儲在源代碼控制的配置文件中,但您可以使用NuGet軟件包文件來鎖定版本或始終獲取特定的標籤或版本。
  • 更改構建過程模板。這是你可以採取的最廣泛的步驟,但也可以說是最強大的。默認的構建過程模板,特別是.12.xaml版本非常簡單直接,但您可以更改模板以執行任何您想要的任何操作。從任何地方抓取特定的依賴關係當然可以成爲其中一種選擇。如果你願意,你也可以讓Build Process模板集成到Maven Ivy中。

至於第三方的選擇,TeamCity被提到了,雖然它增加了一個NuGet服務器,這很容易託管你自己。與其他人一樣,但討論哪種第三方解決方案可能比其他方案更好,這是針對StackOverflow策略的。

+1

經過幾個星期的使用後,我現在完全瞭解您的意見。 我不禁想到TFS中缺少一點點,但將內部依賴關係提交到一個文件夾並更多地使用NuGet已經解決了我的問題,儘管讓我感覺有點「骯髒」結果!! 感謝您的評論 - 答覆授予。 –

+1

Visual Studio Uservoice在這方面有幾個要求,如果你覺得這個很重要,請添加你的聲音(票):http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3436517-have -an-option-to-host-private-nuget-packages-on-t,http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2165043-provide-build-configuration-dependencies-in -tfs-bu可能更多。 – jessehouwing

+0

+1。好主意 - 會做,謝謝。 –

0

一個可能的答案可能是TeamCity的:

From their website

使用的TeamCity作爲的NuGet服務器

如果由於某種原因你不」 t想要 將包發佈到公共提要,例如你正在生產 打算在內部使用的包裝;您可以使用TeamCity作爲本地 NuGet服務器,而不是設置您自己的存儲庫。要開始使用 作爲NuGet服務器的TeamCity,您需要通過單擊管理服務器上的相應按鈕,使TeamCity服務器成爲 NuGet服務器。 NuGet設置| NuGet服務器頁面。兩個不同的鏈接將在同一頁面上顯示爲 :公共(帶有guestAuth前綴)和 私有(帶有httpAuth前綴)提要。如果公共網址不可用, 您需要在管理中啓用TeamCity中的來賓用戶登錄 |全局設置頁面。

我不能說我已經使用過它,但這可能會幫助你解決你的問題。

+0

這是否適用於Team Foundation Service(Visual Studio Online)? –

+0

老實說不知道,我正在尋找類似的東西,所以要試一試。 – Skuld

+0

它可以工作,但需要在Azure-VM或內部機器上運行。 – jessehouwing

0

是的,你應該與一個包管理器去管理內部依賴關係。我們使用Nuget作爲包管理器,併爲我們的內部依賴項提供內部的Nuget服務器,但我確信您可以將其託管在Azure上。我們的CI版本會在運行時自動下載軟件包,以免造成問題。提到的@dylan鏈接是用於此目的的鏈接。

我沒有使用它,但你也可以看看ProGet,它基本上是Nuget企業版。

http://inedo.com/proget/overview

+0

是的,我完全可以看到你的意思。我特意尋找完全在線的東西,這意味着要爲NuGet私人服務器創建一個託管空間。 雖然謝謝。 –