提问人:FFMG 提问时间:11/16/2023 更新时间:11/17/2023 访问量:53
尝试在两个部署作业之间传递变量,我无法使用 $(Environment.ResourceName),它仅在资源名称硬编码时才有效
Trying to pass a variable between two deployment job, I cannot use $(Environment.ResourceName), it only works if the resource name is hardcoded
问:
我正在尝试在两个作业(部署)之间传递 Azure 部署中的变量。根据文档,当我使用时,我需要在标签中传递资源名称。runOnce
resourceType
variable:
资源名称是一个环境变量,$(Environment.ResourceName)
stages:
- stage: Stage
jobs:
- deployment: A
...
steps:
- bash: echo "##vso[task.setvariable variable=OutputVar;isOutput=true]$myVar"
env:
myVar: 'Hello World'
name: printvar
- deployment: B
...
variables:
Variable1: $[ dependencies.A.Outputs.['Deploy_$(Environment.ResourceName).printVar.OutputVar'] ]
Variable2: $[ dependencies.A.Outputs.['Deploy_MyResourceName.printVar.OutputVar'] ]
...
但是当我运行上面的代码时,没有设置,但已正确设置。Variable1
Variable2
所以,没有设置的原因是因为没有花费。Variable1
$(Environment.ResourceName)
我还尝试输出 的值,并且该值正确设置为 ,(在上面的示例中)。$(Environment.ResourceName)
MyResourceName
如何在不对脚本中的值进行硬编码的情况下传递$(Environment.ResourceName)?
答:
不能直接在作业 B 中使用。它是一个部署作业变量,范围限定为特定的部署作业,因此作业 B 中没有命名的此类变量。Environment.ResourceName
Environment.ResourceName
从您的描述中,您需要使用嵌套变量:来获取上一个作业中的输出值。$[ dependencies.A.Outputs.['Deploy_$(Environment.ResourceName).printVar.OutputVar'] ]
恐怕Azure DevOps不支持嵌套变量。因此,变量 $(Environment.ResourceName) 无法按预期扩展。
如何在不对脚本中的值进行硬编码的情况下传递$(Environment.ResourceName)?
我建议您可以更改为使用参数将值传递给变量。
然后,您可以使用以下格式:$[ dependencies.A.outputs['${{parameters.name}}.setvarStep.myOutputVar'] ]
例如:
parameters:
- name: MyResourceName
type: string
default: MyResourceName
pool:
vmImage: windows-latest
stages:
- stage: Stage
jobs:
- deployment: A
...
steps:
- bash: echo "##vso[task.setvariable variable=OutputVar;isOutput=true]$myVar"
env:
myVar: 'Hello World'
name: printvar
- deployment: B
...
variables:
Variable1: $[ dependencies.A.Outputs.['Deploy_${{parameters.MyResourceName}}.printVar.OutputVar'] ]
Variable2: $[ dependencies.A.Outputs.['Deploy_MyResourceName.printVar.OutputVar'] ]
评论
default: $(Environment.ResourceName)
评论
Environment.ResourceName
environment.resourceName
variables:
variables