首页 > 解决方案 > Azure Dev Ops 构建参数来定义 BuildNumber?

问题描述

我有一个 git 存储库,其中有一个master分支,我们从中feature\myFeature获取、处理,然后将拉取请求返回到master.. 非常直截了当。

当一个feature分支被推送到 git repo 时,我们有一个在该分支上运行的构建过程,并生成一个构建。它从项目的程序集中获取 semver 信息 major.minor.patch ..

我想做的是(取决于构建是否打开featuremaster)更改构建名称的构建..

就像是:

我现在面临的挑战是,从使用 $(Rev:r) 得出的最后数字似乎无法用于我为计算内部版本号而编写的 PowerShell 任务中......

我试图围绕设置内部版本号进行一些测试,例如:

Write-Output ("##vso[task.setvariable variable=ReleaseType]alpha")

然后做...

$(ReleaseType)$(Rev:.r)

似乎将发布名称“锁定”为 ReleaseType var 的原始值。

我尝试过的另一个选择是:

Write-Output ("##vso[build.updatebuildnumber]"-alpha")

但这只会覆盖选项表内部版本号格式框中的任何内容...

我正在尝试做的事情可能吗?我猜另一种选择是为每种分支类型设置不同的构建过程..似乎有点OTT..有没有办法从PowerShell派生$(Rev:.r)?

标签: gitazure-devopsazure-pipelinesazure-pipelines-build-task

解决方案


我们不能$(Rev:.r)在 PowerShell 中使用令牌。

如果您只想更改构建名称的构造,例如:

  • feature--> 1.0.3-alpha1, 1.0.3-alpha2, 1.0.3-alpha3
  • master--> 1.0.3-rc1, 1.0.3-rc2

然后您可以创建两个 CI 构建管道(一个 forfeature和另一个 for master)并Build number format直接设置如下:

  • feature-->1.0.3-alpha$(rev:.r)
  • master-->1.0.3-rc$(rev:.r)

根据您的描述,您可以使用major.minor.patch项目程序集中的 semver 信息作为内部版本号的一部分(前缀)。在这种情况下,令牌$(rev:.r)不是增量的,因为前缀总是在变化,所以 的值$(rev:.r)总是1。详情请参阅代币

使用 $(Rev:.r) 确保每个完成的构建都有一个唯一的名称。构建完成后,如果构建编号中没有其他任何内容发生变化,则 Rev 整数值将增加 1。

在此处输入图像描述


推荐阅读