从部署作业中检索输出变量

Dan*_*man 4 azure-pipelines

在下面的示例中,我能够访问 的输出变量jobA,但不能访问 的输出变量deploymentA。主要区别在于这jobA是“正常”作业和deploymentA部署作业。

jobs:
- deployment: deploymentA
  environment: Test
  strategy:
    runOnce:
      deploy:
        steps:
        - checkout: none
        - pwsh: |
            echo "##vso[task.setvariable variable=someVar;isOutput=true]someValue"
          name: someName

- job: jobA
  steps:
  - checkout: none
  - pwsh: |
      echo "##vso[task.setvariable variable=someVarA;isOutput=true]someValueA"
    name: someNameA

- job: jobB
  dependsOn: 
  - deploymentA
  - jobA

  variables:
    deployJobVar: $[dependencies.deploymentA.outputs['someName.someVar']]
    jobVar: $[dependencies.jobA.outputs['someNameA.someVarA']]

  steps:
  - checkout: none
  - pwsh: |
      echo "$(deployJobVar)"    # will display empty string
      echo "$(jobVar)"          # will display 'someValueA'
Run Code Online (Sandbox Code Playgroud)

我发现的最好的提示是:

如果您要从矩阵或切片设置变量,那么要引用该变量,您必须包含作业的名称以及从下游作业访问它时的步骤。

不完全相同,但我尝试在前面添加类似的标识符,但以下方法均无效:

$[dependencies.deploymentA.outputs['runOnce.someName.someVar']]
$[dependencies.deploymentA.outputs['deploy.someName.someVar']]
$[dependencies.deploymentA.outputs['runOnce.deploy.someName.someVar']]
Run Code Online (Sandbox Code Playgroud)

有谁知道访问部署作业输出的特定变量的正确语法?或者,有谁知道如何显示所有输出的变量?

Vic*_*avu 5

这些文档目前还不完整,但只要发挥一点想象力,我们就可以注意到设置多作业输出变量的第二部分适用。

您需要做的就是使用作业名称作为前缀来引用变量:deploymentA.someName.someVar而不是someName.someVar

deployJobVar: $[dependencies.deploymentA.outputs['deploymentA.someName.someVar']]
Run Code Online (Sandbox Code Playgroud)

是的,deploymentA出现两次。

  • 我尝试实现这个,但似乎不起作用。请参阅此[GitHub 问题评论](https://github.com/MicrosoftDocs/vsts-docs/issues/4946#issuecomment-543319731)。 (2认同)