【问题标题】:Unable to use Custom Pipeline Variable for Release Name无法将自定义管道变量用于发布名称
【发布时间】:2019-10-08 13:20:41
【问题描述】:

我创建了一个在发布管道期间更新管道变量的 powershell 脚本。它采用自定义变量并在每次运行时使用语义版本控制将其更新为新版本。

我尝试将此自定义变量添加为发布管道,但一直给我一个错误“来自此管道的发布名称将不是唯一的。使用预定义的变量来生成唯一的发布名称。”

我尝试将变量设置为“发布时可设置”并将范围设置为“发布”

是否有人可能知道是否有办法让发布管道知道这是一个会发生变化的动态变量?

唯一的其他选择是添加修订号 $(versionnumber)$(rev:.r)

【问题讨论】:

  • 它可能会改变,但它保证是唯一的。版本名称必须是唯一的。因此,您无法为所欲为。
  • 完全同意。希望有一种方法可以告诉发布管道它每次都是唯一的值。
  • 有。你在你的问题中提到了它。 $(rev:.r) 你错过了我的观点。如果您运行发布两次,并且它使用相同的版本号,因为在更新管道之前某个步骤失败,或者管道本身在更新其自己的版本号时失败,该怎么办?下次运行管道时,您将获得相同的版本号。您的方案不保证是唯一的。您需要添加保证使名称独一无二的内容。
  • 感谢丹尼尔的反馈。我完全理解您在说什么,是的,我也考虑过您在该步骤之前提到的发布失败的确切场景,并且理解这是 Azure 可能(或可能)这样做的原因之一。再次感谢您的时间和投入。非常感谢。

标签: azure azure-devops azure-pipelines azure-pipelines-release-pipeline


【解决方案1】:

使用自定义管道变量作为发布名称

对于这个问题,我认为实现它是不可行的。发布名称必须是唯一的名称, $(rev:r) 令牌可以确保每个完成的构建/发布都有一个唯一的名称,因为它为每个发布添加了一个递增的数字。构建/发布完成后,如果数字中没有其他任何内容发生变化,则 Rev 整数值加一。所以,基本上我们不能不使用$(rev:r)来实现,除非你可以定义一个与$(rev:r)具有相同功能的令牌。

此外,您还可以使用$(Build.BuildNumber)$(Release.ReleaseId),它们也是独一无二的。

类似问题,请参考case

【讨论】:

  • 谢谢你,休。是的.. $(rev:r) 是唯一的解决方案。我们目前正在使用 ReleaseID,但由于它们都在一个项目中,并且我们有大约 10 个管道,版本控制每天会跳跃大约 30 个版本。而且我们还使用了多个构建工件,因此不幸的是,构建编号不是我们的选择,因为每个构建都有自己的版本已经与另一个不同。但是,我已经考虑过了,并认为我可以找到一种在我想要使用的版本控制中使用 $(rev:r) 的方法。感谢您的时间和投入。非常感谢。
  • @Trevor 很高兴为您提供帮助 :) 如果此答案对您有帮助,您可以Accept it as an Answer。这可能对阅读此主题的其他社区成员有益,我们可以存档此主题,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 2018-11-14
  • 2021-10-12
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
相关资源
最近更新 更多