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

标签 git continuous-integration nuget azure-devops devops

作为一家公司,我们从 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/

相关文章:

Git 自动补全 : syntax error near unexpected token `newline'

ios - 如何在公共(public)存储库上使用 Bitrise.io 和 Firebase

nuget - 可以删除 .nupkg 文件吗?

nuget - 如何使用 Visual Studio for Mac 将图标 URL 添加到我的 Nuget 包

visual-studio - 尝试搜索 NuGet 包时无法创建 SSL/TLS 安全通道

git - 在分支 checkout 时更改环境变量

java - 使用 JGit Eclipse 提交特定日期

Github:如何将未 merge 的上游 pull 请求 pull 入我的分支?

visual-studio-2008 - 关于我们刚刚起步的 TeamCity/MSBuild 设置的后续步骤的建议

java - 如何在新系统上使用 Java 安装 Selenium 并使用 Jenkins 作为 CI 生成正确的测试报告