从天蓝色的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)
我希望从documentation可以用运行时表达式$(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'] ]
被踩成字符串。我在这里尝试的可能吗,也许我的语法不正确。
答案 0 :(得分: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
获得变量名称: