如何为nuget包设置Azure DevOps CI构建/发布管道(高级)

wil*_*ten 16 git continuous-integration nuget devops azure-devops

作为一家公司,我们正在使用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和环境变量将包从一个版本升级到另一个版本.

我知道有很多问题,但我现在在这个问题上挣扎了很长时间.我希望有人能给我一些好的建议.

谢谢!

小智 1

我所做的就是在构建管道中构建预发布包和发布包,并将它们保存到我的工件中。

在我的发布管道中,我将预发布包发布到本地缓存,一旦准备好 UAT,我就会批准发布到 UAT,并将其发布为预发布包。完成 UAT 后,它会被批准发布,并发布发布包。