簡體   English   中英

如何為nuget包設置Azure DevOps CI構建/發布管道(高級)

[英]How to setup Azure DevOps CI build/release pipeline for nuget packages (advanced)

作為一家公司,我們正在使用Azure DevOps中的各種git repo創建NuGet包。 測試和批准軟件包后,應在Azure DevOps組織內共享。

通過使用Azure DevOps提要,我仍在努力設置構建/發布管道。 在組織中共享包之前,包應首先可用於測試。

盡管Microsoft共享了許多建議和最佳實踐,但我仍然找不到可行的解決方案。 我將解釋迄今為止我嘗試過的解決方案:

解決方案A.

使用一個Feed,整個組織。 測試完成后,軟件包會自動推送到@local Feed並推送到@prelease和@release視圖。 管道使用如下:

  • 我們根據git-flow與開發,功能和主分支一起工作。
  • 在構建分支上觸發CI構建
  • 具有預發布后綴的包被推送到@local Feed。
  • 通過在visual studio內的NuGet包管理器中啟用預發布復選框,可以在其他工具中完成驗收測試。
  • 接受包后,將創建一個版本並觸發新版本。
  • 包被推了

問題解決方案A:

  • 接受包時,應將其提升為@release視圖,但包名仍包含-pre后綴。
  • 當一個包被接受時,我認為不應該要求新版本,除非您可以從發布分支執行此操作嗎?
  • 雖然該包只能在帶有前綴的visual studio中看到,但可以使用后綴推送到@release視圖。
  • 當一個包被提升時,它應該被復制和存儲而沒有任何后綴。

解決方案B.

為每個git存儲庫(由Microsoft推薦)使用專用訂閱源,並從CI版本將NuGet包發布到此訂閱源。 每個包都發送到@local提要,沒有任何后綴。 測試並接受包時,包將被提升為@release視圖。 每個專用訂閱源都配置為上游源(@release視圖),發布視圖中的包將在所有開發團隊之間的組織中共享的公共訂閱源中“緩存”。

問題解決方案B:

  • 只有在完成單個部署/構建后,才會添加/緩存通過上游源可見的包。 將包提升為@release視圖時,您無法強制執行此操作。
  • 所有開發團隊都必須在Visual Studio中訂閱所有NuGet訂閱源以安裝最新版本的包。 (30 git repos = 30個feed)

一般的問題:

  • 當我們只創建NuGet包時,git-flow是否可行?
  • 我們應該使用預發布包還是將它們保存在沒有后綴的@ pre-release視圖中?
  • 啟動新構建以獲得沒有后綴的包是錯誤的。 一旦預發布包被測試,它應該只被提升到發布視圖。
  • 我們是否應該在CI構建中構建包並使用發布版本來發布包。 我見過有人使用PowerShell和環境變量將包從一個版本升級到另一個版本。

我知道有很多問題,但我現在在這個問題上掙扎了很長時間。 我希望有人能給我一些好的建議。

謝謝!

我所做的是在我的構建管道中,我構建了一個預發布版本和一個發布包,並將它們保存到我的文物中。

在我的發布管道中,我將預發布包發布到本地緩存,一旦我准備好UAT,我就批准發布到UAT,並將其作為預發布包發布。 完成UAT后,它將被批准發布以發布發布包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM