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

Git 如何为nuget软件包设置Azure DevOps CI构建/发布管道(高级),git,continuous-integration,nuget,azure-devops,devops,Git,Continuous Integration,Nuget,Azure Devops,Devops,作为一家公司,我们正在Azure DevOps中从各种git回购创建NuGet包。测试和批准包后,应在Azure DevOps组织内共享该包 我仍然在使用Azure DevOps提要设置构建/发布管道。在组织中共享包之前,包应该首先可用于测试 尽管微软分享了很多建议和最佳实践,但我仍然找不到可行的解决方案。我将解释到目前为止我尝试过的解决方案: 解决方案A 为整个组织使用一个提要。测试完成后,包会自动推送到@local提要,并推送到@prerelease和@release视图。管道的使用方式如下

作为一家公司,我们正在Azure DevOps中从各种git回购创建NuGet包。测试和批准包后,应在Azure DevOps组织内共享该包

我仍然在使用Azure DevOps提要设置构建/发布管道。在组织中共享包之前,包应该首先可用于测试

尽管微软分享了很多建议和最佳实践,但我仍然找不到可行的解决方案。我将解释到目前为止我尝试过的解决方案:

解决方案A 为整个组织使用一个提要。测试完成后,包会自动推送到@local提要,并推送到@prerelease和@release视图。管道的使用方式如下:

  • 我们按照git流程工作,包括开发、特性和主分支
  • 在开发分支上触发CI生成
  • 带有预发布后缀的包被推送到@local提要
  • 通过在VisualStudio内部的NuGet package manager中启用预发布复选框,可以在其他工具中完成验收测试
  • 当包被接受时,将创建一个版本并触发一个新的构建
  • 包裹被推出
问题解决方案A:

  • 当一个包被接受时,它应该被提升到@release视图,但是包名仍然包含-pre后缀
  • 在我看来,当一个包被接受时,不需要新的构建,除非您可以从发布分支执行这个操作
  • 尽管该包仅在VisualStudio中使用前缀可见,但可以使用后缀将其推送到@release视图
  • 升级包时,应复制并存储该包,不带任何后缀
解决方案B 使用每个git存储库的专用提要(由Microsoft推荐),并从CI构建中将NuGet包发布到此提要。每个包被发送到@local提要,不带任何后缀。测试并接受包后,该包将升级到@release视图。每个专用源都配置为上游源(@release-view),来自release-view的包将“缓存”在组织中所有开发团队共享的公共源中

问题解决方案B:

  • 只有在完成单个部署/构建后,才会添加/缓存通过上游源可见的包。当包升级到@release视图时,不能强制执行此操作
  • 所有开发团队都必须在VisualStudio中订阅所有NuGet提要才能安装最新版本的软件包。(30吉特回购=30个提要)
一般问题:
  • 当我们只创建NuGet包时,git流是否可行
  • 我们应该使用预发布包,还是将它们保留在@pre-release视图中而不带后缀
  • 开始一个新的构建时,如果有一个没有后缀的包,感觉是不对的。测试了预发布包后,只应将其升级到“发布”视图
  • 我们应该在CI构建中构建包,并使用发布构建来发布包。我见过有人使用带环境变量的PowerShell将包从一个版本升级到另一个版本
我知道有很多问题,但我在这个问题上挣扎了很长一段时间。我希望有人能给我一些好的建议


谢谢

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


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

我正在尝试设置一个类似的场景。我也不能提供一个解决方案,请注意:30 repos=30 feed,创建一个开发者消费的feed,并且带有包的feed是上游源,这不是一个想法吗?理想情况下,我希望将prerelease标签添加到来自功能分支的包中,而来自主分支(master?)的包被认为是稳定的包。不知道该怎么设置。你有过这样的运气吗。我们正在努力解决同样的问题,我们希望来自功能分支的所有NuGet包都将分支名称作为预发布版本。