Azure devops 是否可以在生成步骤中设置VSTS生成变量,以便在后续生成步骤中使用该值?

Azure devops 是否可以在生成步骤中设置VSTS生成变量,以便在后续生成步骤中使用该值?,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我目前正在使用VisualStudioTeamServices中的生成(当时是VisualStudioOnline),希望能够在生成步骤中设置生成变量,以便在后续生成步骤中使用新值 显然,您可以在构建开始之前设置它,但我希望在后续构建步骤中延迟绑定变量 这可能吗?在脚本内部,您可以通过在ps1中发出以下命令来更新变量 "##vso[task.setvariable variable=testvar;]testvalue" 然后,可以使用$(testvar)将变量传递到下一个脚本。API中的这篇

我目前正在使用VisualStudioTeamServices中的生成(当时是VisualStudioOnline),希望能够在生成步骤中设置生成变量,以便在后续生成步骤中使用新值

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


这可能吗?

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

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

然后,可以使用
$(testvar)

将变量传递到下一个脚本。API中的这篇文档介绍了可以使用的
#vso
命令

不要忘记将
系统调试设置为
true
。似乎存在一个使标准输出静音的bug,因此所有的vso都不工作


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

"##vso[task.setvariable variable=key]value"
之后,在所有任务上,您可以将变量读取为$(key)。 如果要保护变量,请使用:

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

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

我发现此链接很有用:

这有您可以执行的全部选项:

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

总之:

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

你试过这种方法吗?请参阅@chrispattersons的答案,除非您使用的是任务组,否则此选项有效。我创建了一个包含解决方法的问题:System.debug在VSTS变量中设置,请参阅