2016-04-07 60 views
1

我最近安裝了Nuget Gallery(https://github.com/NuGet/NuGetGallery)作爲存儲庫。理想情況下,我想創建多個提要,以便我們可以區分將用於將項目部署到生產環境的包的其他項目(dll,合同等)中重用的nuget包。具有多個Feed的Nuget Gallery

我知道我可以通過創建Nuget Gallery的多個實例來實現這一點,但是這對我來說似乎有點矯枉過正,這意味着兩個網站會有兩個數據庫。我也很熟悉MyGet在功能上提供此功能,但我無法獲得購買批准。我也知道teamcity包含它自己的提要服務器,但它不允許這種多饋源方案,也沒有足夠好的性能來大規模使用。

簡而言之理想部署方案將是如下:

  • TeamCity的生成部署包或DLL /合約套餐,根據不同的構建場景。
  • teamcity發佈部署包到nuget庫部署飼料 (說:nugetgallery.server.com/ 部署/api/v2)。
  • teamcity將dll/contract軟件包發佈到nuget gallery開發人員供稿 (例如:nugetgallery.server.com/ dev/api/v2)。
  • 章魚始終搜索包在 nugetgallery.server.com/ 部署/API/V2
  • 開發者/ TeamCity的在 nugetgallery.server.com/軟件包搜索開發/API/V2

這樣我就保持乾淨,甚至可以創建只包含發佈包的第三種類型的Feed,這樣我就可以確定沒有任何東西會被部署到生產環境中。

我可能錯過了一些基本的方法,所以我選擇這個選擇的替代方案是受歡迎的。

+0

據我所知,兩名飼料的NuGet需要兩個網站,爲NugetGallery和NugetServer。它需要兩個數據庫嗎?我從來沒有使用NugetGallery,但對於NuGetServer,我知道你可以將這兩個網站指向同一個存儲庫路徑。 –

+0

我相當有信心,我也可以指出至少文件到同一位置,但不太確定兩個不同網站的同一個數據庫,因爲我想不出一種基於它們上傳的url來區分軟件包的方式。我認爲這將有兩個同一個網站的實例沒有?有一個Gallery.SiteRoot鍵,我可以嘗試和它一起玩,看看是否適合目的 – rjso

+0

嗯,好點。使用你的設置,你需要兩個數據庫,因爲如果你共享一個數據庫,你會有包ID衝突,對嗎?這對我來說意味着你可能需要兩個獨立的數據庫。 –

回答

1

因爲我找不到任何相關的東西,我最終放棄了這兩個服務器解決方案。我努力尋找任何文檔nuget畫廊真正具有的功能。

現在我們有類似deploy-nuget.server.com和dev-nuget.server.com,單獨的URL,iis實例和sql實例和文件夾位置。

對於有人可能在未來看到這一點,可以工作的解決方案之一是基於用戶的私人存儲庫,不幸的是在我的情況下,這是不夠的,因爲我也希望包是存儲在不同的位置,以便我們可以根據軟件包的類型實施不同的備份策略。另一種選擇是實際更改爲分離項目,但從我之前的經驗來看,這種方式永遠不會結束,因爲早些時候您將需要升級,並且您的自定義更改將不得不以某種方式進行排序。

我知道這不是nuget gallery背後的想法,因爲您不應該刪除軟件包。但是我們確實有一些空間限制,所以最終我們將刪除爲質量保證環境創建的某些部署包,這些包顯然不再關心。

0

你可以試試Proget。使用此服務器,您可以輕鬆管理多個NuGet Feed。它還提供支持所有功能的免費版本。