无法在 Azure DevOps Build Pipelines 中的队列时间设置自定义计数器

Custom counter can not be set at queue time in Azure DevOps Build Pipelines

我已经用自定义计数器的值设置了一个变量:

$[counter('myCounter', 0)]

我使用此值在选项选项卡中设置 Build number format

v$(major).$(minor).$(myCounterVariable)

我第一次 运行 它,它工作正常,值是 0 因为它正在使用计数器。我还选中了 'Settable at queue time' 复选框,以便用户在手动触发构建管道时可以覆盖。然而,这并没有实现。

但是有效的是,如果我不将变量设置为上面的计数器并将其设置为一个数字,例如 999,当我在排队时间将其设置为 567 时,它会得到被567覆盖,正确。

计数器似乎不允许您覆盖它。

备注

圣诞节前,这是有效的,我想知道 DevOps 是否发生了变化,删除了覆盖自定义计数器的能力。

Custom counter can not be set at queue time in Azure DevOps Build Pipelines

的确,我也可以在我这边重现这个问题。但是我检查了最近的两个 Sprint Updates,但没有发现任何关于计数器的更新,所以我不确定 DevOps 是否有变化,删除了覆盖自定义计数器的能力。

但是,我们可以确定的是自定义计数器无法在排队时设置,我发现这个问题已在我们的产品问题主论坛上报告:

Custom counter can not be set at queue time in Azure DevOps Build Pipelines

期待产品组尽快解决这个问题,你可以查看这个工单的反馈。

作为此问题的解决方法,我们可以向管道再添加一个 inline powershell 任务,并添加一个变量 ManuallTriggerNumber 并将值设置为empty(还选中了 'Settable at queue time' 复选框):

在内联 powershell 任务中,我们使用 Logging Command 设置内部版本号:

Write-Host "##vso[build.updatebuildnumber]v$(major).$(minor).$(ManuallTriggerNumber)"

并设置条件:

and(succeeded(), ne(variables['$(ManuallTriggerNumber)'], 'Null'))

在这种情况下,当我们手动触发构建管道时,我们可以在队列时间设置变量 ManuallTriggerNumber 值,将调用内联 powershell 以根据条件更新构建号 true.

希望这对您有所帮助。