27

我目前在 Visual Studio Team Services 中使用 Build(以前是 Visual Studio Online),并且希望能够在构建步骤中设置构建变量,以便可以在后续构建步骤中使用新值。

显然,您可以在构建开始之前设置它,但我希望在后续构建步骤中后期绑定变量。

这可能吗?在此处输入图像描述

4

4 回答 4

31

在脚本内部时,您可以通过在 ps1 中发出以下内容来更新变量

"##vso[task.setvariable variable=testvar;]testvalue"

然后,您可以使用将变量传递到下一个脚本$(testvar)

于 2015-10-06T05:27:40.517 回答
7

API 中的这个文档讨论了##vso您可以使用哪些命令。

不要忘记设置system.debugtrue. 似乎有一个被静音的错误,stdout因此,一切##vso都不起作用。

https://github.com/Microsoft/vso-agent-tasks/blob/master/docs/authoring/commands.md

于 2016-04-15T18:45:31.537 回答
1

您可以创建一个 powershell 脚本并将其作为构建任务引用。然后在您的 powershell 脚本中添加以下内容:

"##vso[task.setvariable variable=key]value"

之后,在您的所有任务中,您可以将变量读取为 $(key)。如果要保护变量,请使用:

"##vso[task.setvariable variable=secretVar;issecret=true]value"

然后在您的下一个任务中将其用作 $(secretVar) 。

于 2018-03-27T12:04:00.277 回答
1

我发现此链接很有帮助:https ://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=powershell

这有你可以做什么的完整选项:https ://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch

您可以在任务之间重用设置变量,也可以在工作之间重用。我在舞台上找不到任何东西。

总之:

jobs:

# Set an output variable from job A
- job: A
  pool:
    vmImage: 'vs2017-win2016'
  steps:
  - powershell: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the value"
    name: setvarStep
  - script: echo $(setvarStep.myOutputVar)
    name: echovar

# Map the variable into job B
- job: B
  dependsOn: A
  pool:
    vmImage: 'ubuntu-16.04'
  variables:
    myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutputVar'] ]  # map in the variable
                                                                          # remember, expressions require single quotes
  steps:
  - script: echo $(myVarFromJobA)
    name: echovar
于 2020-08-10T04:41:09.460 回答