将变量传递给 Azure YAML 管道中的模板
Pass a variable to template in an Azure YAML pipeline
从 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)
从 documentation 我希望我可以用运行时表达式 $[ dependencies.setup.outputs['slot.name'] ]
直接替换 marco $(slotName)
,结果如下:
- 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'] ]
被视为字符串的印象。有没有可能是我在这里尝试的,也许我的语法不正确。
在您的 create_slot
作业中调用 slot.name
没有语法问题,这里的问题应该是由您在 setup
作业中使用的脚本引起的。由于您没有分享 setup
工作的脚本,我 post 下面与我分享它的一些要点。
在您的 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'] ]
获取变量名:
从 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)
从 documentation 我希望我可以用运行时表达式 $[ dependencies.setup.outputs['slot.name'] ]
直接替换 marco $(slotName)
,结果如下:
- 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'] ]
被视为字符串的印象。有没有可能是我在这里尝试的,也许我的语法不正确。
在您的 create_slot
作业中调用 slot.name
没有语法问题,这里的问题应该是由您在 setup
作业中使用的脚本引起的。由于您没有分享 setup
工作的脚本,我 post 下面与我分享它的一些要点。
在您的 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'] ]
获取变量名: