【问题标题】:Pre-defined variable is empty in when creating VSTS release创建 VSTS 版本时预定义变量为空
【发布时间】:2017-07-12 08:26:57
【问题描述】:

我在 VSTS 中使用 CD 设置了一个 Service Fabric 项目。 CD 进程已从 Visual Studio 中的 CD 向导设置。到目前为止一切都很好,但是当发布发布时,我没有从名为 Build.DefinitionNamepre-defined variable 中获得任何价值,用于命名发布。

这是我的版本名称的配置方式:$(Build.DefinitionName)-$(date:yyyyMM).$(rev:r)

如果我们查看发布日志,变量没有值:

[BUILD_DEFINITIONNAME] --> []
[RELEASE_ARTIFACTS_{Primary artifact alias}*_DEFINITIONNAME] --> []

*此值已正确填充。

根据主要工件变量的文档,上面的两个变量应该是相同的。

因此,我的版本被命名为 $(Build.DefinitionName)-201702.7

如果我改用Build.BuildNumber。我得到了正确的值。

如何填充变量?


更新

手动创建构建和发布定义时,$(Build.DefinitionName) 会在发布端正确填充。但是,当您使用 Visual Studio 中的 CD wizard 时,问题似乎出现了。我可能遗漏了一些东西,但构建定义的设置是相同的。或者 CD 向导发生了一些奇怪的事情。

【问题讨论】:

  • 您是否尝试将变量从构建过程传递给发布管理?
  • 我无法重现该问题。 (发布名称:$(Build.DefinitionName)-$(date:yyyyMM).$(rev:r),那么结果是 ClassTestVNext-201702.3)你能用新的构建和发布定义重现这个问题吗?发布的详细日志是什么?
  • @MrHinsh 是的。通过阅读文档,我觉得这应该是开箱即用的。
  • @starain-MSFT 我刚刚尝试手动设置新的构建和发布定义。我也无法重现该错误。但是当我使用 Visual Studio 中的 CD 向导时,我又遇到了同样的错误。比较所有设置,它们在构建定义中是相同的。所以我的解决方法是手动创建我的定义。
  • Visual Studio 中使用 CD 向导的步骤是什么?

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


【解决方案1】:

在构建号从构建传递到发布时,没有开箱即用的方式在构建和发布之间传递更多变量。

但是我编写了一系列构建任务来执行此操作:https://marketplace.visualstudio.com/items?itemName=nkdagility.variablehydration

它包含两个任务,第一个将指定的变量保存到一个 json 文件中,你应该把它放在构建输出中。

第二个恢复你想要的变量。如果您的版本有多个源构建,则特别有用。

【讨论】:

    【解决方案2】:

    解决方案是在 Web 访问时手动创建发布定义并设置持续部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多