0

考虑来自 azure yaml 管道的以下工作

  - job: create_slot
    dependsOn: setup
    displayName: 'Create slot'
    pool:
      vmImage: 'windows-latest'
    variables:
      slotName: $[ dependencies.setup.outputs['slot.name'] ]
    steps:
      - bash: |
          echo "Slot to be created: $(slotName)"
        displayName: 'Show slot name'
      - template: templates/create-slot.yml
        parameters:
          slot: $(slotName)

文档中,我希望我可以$(slotName)直接用运行时表达式替换 marco $[ dependencies.setup.outputs['slot.name'] ],结果如下:

   - job: create_slot
    dependsOn: setup
    displayName: 'Create slot'
    pool:
      vmImage: 'windows-latest' 
    steps:
      - bash: |
          echo "Slot to be created: $(slotName)"
        displayName: 'Show slot name'
      - template: templates/create-slot.yml
        parameters:
          slot: $[ dependencies.setup.outputs['slot.name'] ]

但是如果你这样做,管道就会失败

在此处输入图像描述

从错误中,我得到的印象是$[ dependencies.setup.outputs['slot.name'] ]被踩在弦上。我在这里尝试的可能是什么,也许我的语法不正确。

4

1 回答 1

1

slot.name您的工作没有语法问题create_slot,这里的问题应该由您在setup工作中使用的脚本解决。由于您没有分享setup作业脚本,因此我在下面发布了我的一些关键点。

在您的setup工作中,它应该包含一个用于生成输出变量 name的脚本。此外,持有变量生成过程的任务应该配置引用名称slot

简单示例(更新):

jobs:
- job: setup
  steps:
  - checkout: none
  - task: PowerShell@2
    inputs:
      targetType: 'inline'
      script: 'echo "##vso[task.setvariable variable=name;isOutput=true]Staging"'
    name: slot
- job: create_slot
  dependsOn: setup
  variables:
    slotName: $[ dependencies.setup.outputs['slot.name'] ]
  steps:
  - checkout: none
  - bash: |
          echo "Slot to be created: $(slotName)"
    displayName: 'Show slot name'

只有这样,create_slot依赖作业的setup作业才能使用以下语法获取变量名$[ dependencies.Job1.outputs['slot.name'] ]

在此处输入图像描述

于 2020-04-28T04:02:38.193 回答