如何在Azure发布管道中跨代理作业使用输出变量

时间:2019-06-09 18:34:21

标签: azure azure-devops devops azure-devops-rest-api azure-devops-extensions

在我的azure发布管道中,我有2个代理作业,一个是使用power-shell进行sql部署,另一个是使用power-shell进行kubernetes。 如何使用power-shell在第一个代理作业中设置输出变量并在第二个代理作业中使用输出变量。

enter image description here

2 个答案:

答案 0 :(得分:1)

使用

Write-Output "##vso[task.setvariable variable=testvar;isOutput=true;]testvalue"

然后引用输出变量,就好像它来自将来的任务一样。

$(taskreference.testvariable)

可以在powershell脚本任务的输出部分上设置任务引用名称:

enter image description here

但是,当我阅读文档时,似乎无法获得跨职位参考:

  

待办事项

     

我不确定我们将如何生成Job ref名称,因为此时我们还没有工作链。

     

应该是这样的:

{DefinitionName}_{JobName}
     

请参阅:Azure-Pipelines-Agent/docs/Outputvariable.md

因此,该变量目前仅在同一Job中起作用。

It does look like YAML build do already support cross-phase output variable references

职位:

# 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

答案 1 :(得分:1)

  

如何在Azure发布管道中跨代理作业使用输出变量

恐怕目前暂时无法直接在座席工作中使用输出变量。

Definitions - Update s相关问题,您可以跟进。

要解决此问题,您可以尝试按照解决方法

有关使用REST API更新发布定义变量的值的详细信息,您可以遵循以下标签:

{{3}}

希望这会有所帮助。