【问题标题】:TFS Release Management Artifacts Variable not availableTFS 发布管理工件变量不可用
【发布时间】:2017-01-17 04:43:55
【问题描述】:

我们希望使用 TFS 2015.3 发布管理来打包/部署我们的软件。 对于我们的一项发布任务,我们需要在我们的一个 Powershell 脚本中访问Release Artifact Variables

但每次我们尝试访问其中一个变量 RELEASE_ARTIFACTS_[source-alias]_BUILDNUMBER 时,我们都会收到以下错误消息:

[错误] 术语“Release_Artifacts_[source-alias]_BUILDNUMBER”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我已经尝试使用带有以下语句的内联 powershell 脚本打印出所有可用的环境变量:Get-ChildItem Env:。 但无论如何这些变量都不存在..

在使用 Release Artifact 变量时是否存在任何已知问题?

【问题讨论】:

  • 嗯...根据this,您应该用您的有效源别名替换[source-alias] 字符串。他们举了一个例子:“ASPNET4.CI”,它会在变量名中变成“ASPNET4_CI”,形成一个完整的东西,名为“RELEASE_ARTIFACTS_ASPNET4_CI_BUILDNUMBER”。

标签: powershell tfs release-management


【解决方案1】:

Release Artifacts 变量似乎不适用于 TFS on-prem;我使用 VSTS 和 TFS2015.3 测试了相同的脚本。

在 VSTS 版本中,您可以在初始化步骤中看到版本变量,而在本地版本中,这些变量缺失:

【讨论】:

  • 好的,谢谢您提供的信息。你知道我如何能够将我的工件从我的构建复制到假设 $(build.artifactstagingdirectory) 吗?所以基本上问题是我如何获得构建工件的正确路径,以便以后可以使用它们。 (压缩/部署...)
  • @Mike1991 我通常使用 MSBuild 或 VisualStudio 构建步骤的日志来识别工件的完整路径(例如 C:\B\1\8\s\bin\debug\foobar.dll ) 然后在 CopyRoot 字段中使用带有 $(Build.SourcesDirectory)\bin\debug 的 Copy And Publish Build Artifact 构建任务
  • 是的,但是如果我需要所有链接工件(多个)的 BuildNumber 怎么办?
【解决方案2】:

您正在将表单的预定义变量与发布管理工件一起使用:

RELEASE_ARTIFACTS_[source-alias]_[variable-name]

您需要将[source-alias] 替换为发布定义中包含的工件源的别名。您可以在版本定义的 Artifacts 选项卡中找到别名。

那么你可以如下使用它:

  • 内联脚本 参数中使用时,工件中的句点 名称必须替换为下划线。 env:RELEASE_ARTIFACTS_[ScrumProject]_[BUILDNUMBER]
  • 工件变量也可以作为参数传递给任务。在 在这种情况下,将下划线替换为句点: Release.Artifacts.[source-alias].[variable-name]

更多详情请参考 MSDN 的教程页面:Artifacts in Microsoft Release Management

经过一番测试,得到了与ds19相同的结果。似乎发布工件不支持 TFS2015 update3 目前仅适用于 VSTS。


更新

您只需要在Publish Build ArtifactsCopy and Publish Build Artifacts 步骤中指定build.artifactstagingdirectory,TFS 就会为您做这件事。要压缩工件,您还可以使用 powershell 脚本来实现这一点,更多详细信息您可以参考此博客Manage Artifacts with TFS Build vNext

【讨论】:

猜你喜欢
  • 2017-09-15
  • 2016-12-28
  • 2018-11-14
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
相关资源
最近更新 更多