2013-07-18 87 views
1

我已經讀完了Pro Nuget這本書,我認爲使用它對我們的依賴會比我們現在的方法更好。此外,您可以構建應用程序部署包以將您的構建部署到各種環境中,這也是我們希望更好地實現自動化的一種方式。nuget飼料和促銷

其中一個想法是有幾個Nuget飼料;一個ci源,每個成功的集成發佈一個包,一個qa源,你只發布你想要qa測試的版本,然後是一個發佈源,其中只複製成功測試的qa源中的包。

我喜歡這個主意,但是建議ci版本通過-alphaXXXX或類似的結尾標記爲預發行。如果我這樣做,我需要在升級到qa供稿的過程中刪除該指定。我認爲你必須修改包才能做到這一點,然而Nuget包的一部分吸引力在於,一旦構建,你不會改變它們

另一個想法是,因爲我們大多數工作在trunk,所以當我做rc分支我們的構建過程將停止添加版本的預發佈部分。這似乎是可行的,然後從qa推廣到發佈feed將是一個簡單的包裝副本。

是否有人正在採用這種方法,這是推薦的方法?我錯過了什麼?我用Google搜索了一下,但是尼特在這個方法的細節上發現了很多討論。

回答

2

我是這本書的作者之一,所以我希望你喜歡它!我們正在編寫第二版,其中包含大量新內容,而且這個特定案例也正在處理中。

爲了澄清,CI-> QA-> PROD場景設置爲示例包促銷流程:如果您願意,可以創建自己的包。

您指的是正確的:軟件包升級不應要求對軟件包及其內容進行任何修改。這實際上意味着在將其推廣到其他Feed時,甚至不會重新編譯包內的二進制文件。此規則的唯一例外是軟件包預發佈版本,可以對其進行調整或刪除。注意:宣傳時語義版本應保持不變!

這是http://www.MyGet.org的核心功能:這裏是它的文檔http://docs.myget.org/docs/reference/package-sources(場景:推包上游)。

上述原則適用於此功能,我們還負責飼料安全/ api鍵。 如果你不使用MyGet,那麼你需要自己做。邏輯步驟是:

  1. 下載軟件包從源進料
  2. 任選改變預發佈標籤
  3. 推封裝到目標進料

許多開源項目(手動?)正在使用此場景,在MyGet.org上使用CI源,然後將上游推送到NuGet.org。上游軟件包源可以是任何其他NuGet源(例如Chocolatey.org圖庫,Resharper插件庫,另一個MyGet.org源,...)。

+0

我非常喜歡這本書,它給了我很多想法,我希望試驗以改進我們當前的流程。我知道qa要釋放的ci就是一個例子,但我認爲它對我們來說會很好。作爲一個後續問題,假設我提示qa的應用程序依賴於另一個包含業務邏輯層的包,該包始終與應用程序同時發佈。我假設我必須遞歸地推廣應用程序依賴關係(我們也構建的那些,我們不使用beta第三方庫)。我期待第二版! – Andy

+1

太棒了!是的,如果將它們一起釋放,您還需要提升軟件包的依賴性。 –

+0

@XavierDecoster你能澄清#2的工作原理嗎?我正在嘗試在VSTS中設置此流程,而不是MyGet。是否支持從軟件包中刪除預發佈標籤的命令,還是必須解壓縮軟件包,修改nuspec文件並重新打包?似乎應該有一個內置的nuget命令。 –