【问题标题】:VSTS link build definition version numbersVSTS 链接构建定义版本号
【发布时间】:2018-01-31 09:05:21
【问题描述】:

我们使用 VSTS 来管理我们的存储库并作为构建管理器。 我们有一个包含多个程序集的解决方案,其中一个程序集被打包为 NuGet 包以供其他项目引用。

我们有 2 个构建定义。一个定义用于创建可部署包和 NuGet 包的整个解决方案,一个定义用于仅创建 NuGet 包。

版本控制:

  • 版本号类似于 {Major}.{Minor}.{Build}.{Revision}
  • 每次构建解决方案定义时,都应递增构建
  • 每次构建 NuGet 定义时,都应增加修订版

例如:

  • 从 1.0.5(.0) 开始
  • 构建 NuGet => 1.0.5.1
  • 构建解决方案 => 1.0.6(.0)
  • 构建解决方案 => 1.0.7(.0)
  • 构建 NuGet => 1.0.7.1
  • 构建 NuGet => 1.0.7.2

为此,我们在构建定义中使用了 $(rev:.r) 变量,该变量在每次构建时递增。 但是,在 NuGet 定义中,我们不知道解决方案定义中的最新内部版本号。

目前我们正在使用一个变量来设置它,但正如您可以想象的那样,这是不可取的。 问题是,我们能否以某种方式将 NuGet 定义链接到解决方案定义以提取内部版本号?

【问题讨论】:

  • 你让这件事变得比它需要的困难得多。我看不出将您的 nuget 版本链接到您的解决方案版本没有任何好处,这将是一个无法正确管理的混乱。我会在你的 nuget 包和解决方案中使用 GitVersion 并完成它!

标签: visual-studio azure-devops build-definition


【解决方案1】:

包版本使用内部版本号是不合理的。原因如下:

  1. 版本号在一个版本中是相同的。
  2. 将为您的 VSTS 帐户中的所有构建定义增加内部版本号。比如你在project1中builddefinition1,build号是100,那么如果project2中builddefinition2是build,build号就是101,如果再builddeinition1,build号就是102。

而设置nuget包版本的常用方法是使用gitversion或汇编版本:

如果你使用git作为VCS,并且工作流符合gitflow of gitversion,那么你可以使用GitVersion任务,并使用这个任务生成的版本变量作为nuget包版本。

或者您可以使用Update AssemblyInfo 任务或Assembly Info Reader 任务等作为nuget 包版本。

【讨论】:

  • 我不是指 VSTS 中的内部版本号。如前所述,我们正在使用 $(rev:.r) 变量,它会随着构建定义中的每个构建而递增。无论如何,我会试试 GitVersion,谢谢!
  • $(rev:.r) 对于相同的构建定义也会增加。如果您在使用 GitVersion 获取 nuget 包版本时遇到问题,请随时提出问题。
猜你喜欢
  • 2018-05-03
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 2019-03-04
相关资源
最近更新 更多