【发布时间】:2020-06-02 21:03:20
【问题描述】:
我正在尝试设置一个 Azure Pipeline,它会根据正在构建的分支自动更新版本号。给定一个master 分支、一个develop 分支和一个{major.minor.patch.build} 形式的版本,我想实现以下目标:
每当管道被master触发时:
-
patch加 1 -
build重置为 0
每当管道被develop触发时:
-
build加 1
假设起始版本为 1.0.0.0,我希望在多次运行后版本号看起来像这样的示例:
- 在
develop上运行 1:1.0.0.1 - 在
develop上运行 2:1.0.0.2 - 在
master上运行 3:1.0.1.0 - 在
master上运行 4:1.0.2.0 - 在
develop上运行 5:1.0.2.1 - 在
develop上运行 6:1.0.2.2 - 在
master上运行 7:1.0.3.0
我的第一个想法是为 patch 和 build 值使用计数器,但似乎没有办法有条件地增加它们或重置计数器。我的下一个想法是使用几个基于分支有条件执行的脚本任务,例如:
#Update build
- powershell: echo "##vso[task.setvariable variable=version.build;isOutput=true]$(version.build + 1)"
condition: eq(variables['Build.SourceBranch'], 'refs/heads/develop')
#Reset build number
- powershell: echo "##vso[task.setvariable variable=version.build;isOutput=true]0"
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
#Update patch
- powershell: echo "##vso[task.setvariable variable=version.patch;isOutput=true]$(version.patch + 1)"
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
但是,这种方法在运行中并不持久(更不用说$(version.patch + 1) 不起作用。我找不到有关如何以这种方式实际增加变量的任何信息)。我的最后一个想法是在存储库中有一个版本文件并使用它,但我真的不想走这条路。
有没有办法使用 Pipelines 来实现我正在寻找的东西,或者我是否在试图以这种方式进行尝试?
编辑
我应该在问题中提到,此时我有一个管道设置来构建我的应用程序,但对版本控制没有任何作用。我现在正在寻找的是一种动态更新一些持久变量/值的方法(特别是patch 和build)。
【问题讨论】:
标签: azure-devops azure-pipelines