【问题标题】:TFS Build and Powershell: how to acces predefined build variablesTFS 构建和 Powershell:如何访问预定义的构建变量
【发布时间】:2020-06-14 01:08:49
【问题描述】:

我在从 powershell 脚本访问构建变量时遇到问题,例如我想访问 Agent.BuildDirectory。 我试过了:

$Build.SourcesDirectory
$(Build.SourcesDirectory)

没有任何作用。

我知道我可以使用 $Env:TF_BUILD_SOURCESDIRECTORY,但并非所有变量都可以通过这种方式使用。

你有什么建议吗?

【问题讨论】:

  • 嗨@Darqer,你能告诉我们你使用的是哪个版本的TFS吗?
  • 我使用的是 15.117 版

标签: powershell tfs build


【解决方案1】:

所以这是 TFS 2017 Update 3。你应该能够做你想做的事。您在哪里尝试使用变量,作为构建中的参数还是实际在 PowerShell 脚本中?这些变量可以用作参数,并在运行时由代理替换并传递给脚本,但如果您尝试在 $(...) 之类的脚本中访问它们,它将不起作用。您确实需要使用 $env:VARIABLE。变量部分中的所有变量都会在运行时转换为带有名称的环境变量。因此,例如,如果您正在运行如下图所示的内联 PowerShell,您可以使用 $(..)

或者,如果您想将参数传递给 PowerShell 脚本,您也可以

但你不能从脚本内部。

【讨论】:

  • 这可以解释我的问题,我尝试在 ps1 脚本中使用变量。非常感谢您的回答:)。
【解决方案2】:

您应该使用$(Agent.BuildDirectory) 而不是$(Agent.SourcesDirectory)。从以下链接检查代理变量:

https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#agent-variables

更新: 添加截图:

【讨论】:

  • 是的,我在我的问题中犯了一个错误,在我的脚本中有 $(Build.SourcesDirectory) 但对于 $(Agent.BuildDirectory) 我有同样的效果,它不起作用。
  • 我使用的是 ps1 脚本文件,而不是内联脚本。我不知道这些方法之间的数据访问存在差异。谢谢你的帮助:)。
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 2016-03-06
  • 2017-09-28
  • 2016-10-29
  • 1970-01-01
  • 2021-03-08
  • 2018-03-06
  • 1970-01-01
相关资源
最近更新 更多