【问题标题】:Manage auto-incrementation of versions管理版本的自动递增
【发布时间】:2021-07-28 13:40:50
【问题描述】:

我是一名 DevOps 工程师,为 Azure DevOps 中的团队构建 CI 流程。 其中一个团队有一个不断创建库以在其他项目中重用的工作流程。此工作流程从一个自动流程开始:

  • 基于某种结构创建一个新的存储库。
  • 创建一个对代码运行测试的管道(该管道在 pullrequests 上运行)
  • main 分支定义分支策略,包括使用上述管道进行构建验证。

因此,现在每次开发人员在其中一个库中发出拉取请求时,测试管道都会运行,并且只有成功通过才能完成拉取请求。

现在关于版本控制:目的是在每次合并到 main 时,提交将被标记为 major.minor。 我首先想到的是创建另一个release 管道(不是在Azure Release Pipelines 中发布 - 只是一个常规管道),在推送到main 时触发,因此一旦合并拉取请求,它将被触发,并且只会标记当前提交并推送它。

我想做的是使用语法

name: <major_somehow>.$(Rev:r)

然后使用它来标记提交。所以每次合并到主版本时,次要版本都会自动递增。

我的问题是,我想创建一些机制让开发人员以某种方式标记他们想要增加主要版本。 我首先想到的可能是同意一个约定,即他们不会在拉取请求的描述中使用[major] 之类的东西。但这并没有真正帮助我,因为我需要在“发布”管道中知道这一点。

有人可以建议吗?

【问题讨论】:

  • 只需使用 GitVersion。它处理所有这些场景。
  • @DanielMann GitVersion 是什么?
  • 一个语义版本控制工具。您可以使用您选择的搜索引擎发现更多信息。
  • 查看我的帖子了解一些选项 - worklifenotes.com/2020/02/27/…

标签: azure-devops azure-pipelines versioning


【解决方案1】:

您可以在 yaml 管道中使用 counter 执行此操作。如果您在另一个分支中切换项目版本,则计数器将随着管道的每次构建而递增,Azure DevOps 会单独递增计数器。

因此,您可以构建版本,例如按以下顺序 0.3.4, 0.2.0, 0.2.1, 0.3.5, 0.2.2, ...

variables:
  - name: 'projectVersion'
    value: '0.2'
  - name: 'runNumber'
    value: $[counter(variables['projectVersion'], 0)]
  - name: 'buildver'
    value: '$(projectVersion).$(runNumber)'

【讨论】: