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