作为一家公司,我们从 Azure DevOps 中的各种 git 存储库创建 NuGet 包。一旦包经过测试和批准,它应该在 Azure DevOps 组织内共享。
我仍在努力使用 Azure DevOps 源设置构建/发布管道。包在组织中共享之前应首先可供测试。
尽管微软分享了很多建议和最佳实践,但我仍然找不到可行的解决方案。我将解释到目前为止我尝试过的解决方案:
解决方案A
在整个组织中使用一个提要。一旦测试完成,包会自动推送到@local 提要并推送到@prerelease 和@release View 。管道使用如下:
- 我们根据 git-flow 工作,有 develop、feature 和 master 分支。
- 在开发分支上触发 CI 构建
- 带有预发布后缀的包被推送到@local feed。
- 通过在 visual studio 内的 NuGet 包管理器中启用预发布复选框,在其他工具中完成验收测试。
- 当包被接受时,将创建一个版本并触发一个新的构建。
- 包被推送
问题解决方案 A:
- 当一个包被接受时,它应该被提升到@release View ,但包名称仍然包含 -pre 后缀。
- 在我看来,当一个包被接受时,不需要新的构建,除非你可以从发布分支执行它?
- 虽然包仅在带有前缀的 visual studio 中可见,但可以将带有后缀的包推送到 @release View 。
- 当一个包被提升时,它应该被复制和存储而不带任何后缀。
方案B
为每个 git 存储库使用专用提要(Microsoft 推荐),并将 NuGet 包从 CI 构建发布到此提要。每个包都发送到 @local 提要,没有任何后缀。当包被测试并被接受时,包被提升到@release View 。每个专用提要都配置为上游源(@release View ),发布 View 中的包将“缓存”在组织中所有开发团队共享的公共(public)提要中。
问题解决方案 B:
- 只有在完成单个部署/构建后,才会添加/缓存通过上游源可见的包。当包被提升到 @release View 时,您不能强制执行此操作。
- 所有开发团队都必须在 Visual Studio 中订阅所有 NuGet 源才能安装最新版本的包。 (30 个 git repos = 30 个提要)
一般问题:
- 当我们只创建 NuGet 包时 git-flow 是否可行?
- 我们应该使用预发布包还是将它们保留在不带后缀的@pre-release View 中?
- 开始一个新的构建以拥有一个没有后缀的包感觉是错误的。一旦预发布包经过测试,它应该只被提升到发布 View 。
- 我们应该在 CI 构建中构建包并使用发布构建来发布包。我见过有人使用带有环境变量的 PowerShell 将包从一个版本升级到另一个版本。
我知道有很多问题,但我现在已经为这个问题苦苦挣扎了很长一段时间。我希望有人能给我提供一些好的建议。
谢谢!
最佳答案
我所做的是在我的构建管道中,我构建了一个预发布包和一个发布包,并将它们都保存到我的工件中。
在我的发布管道中,我将预发布包发布到本地缓存,一旦我准备好 UAT,我批准发布到 UAT,并将其发布为预发布包。 UAT 完成后,它会获准发布到发布发布包的发布。
关于git - 如何为 nuget 包设置 Azure DevOps CI 构建/发布管道(高级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155122/