我们正在努力将经典 Azure Pipelines 转换为 YAML Pipelines。不清楚的一件事是如何确保两个具有相同名称但不同含义的变量的不同变量组不会互相踩踏。
例如,如果我有变量组vg1
and vg2
,每个变量都有名为secretDataDestination
,如何确保正确secretDataDestination
在 YAML 管道中使用?
一个更令人担忧的例子是,如果我们最初有两个变量组without重叠的变量名称,我们如何确保将新的重叠变量名称添加到组中不会取代最初预期的变量使用?
解决方法是利用输出变量在 Azure DevOps 中使用一些小型内联 PowerShell 任务代码。
首先,创造2个就业岗位。每个作业都有自己的变量组,在本例中Staging
and Prod
。两组都包含变量apimServiceName
and apimPrefix
。通过将变量回显为,将变量添加为作业输出isOutput=true
像这样:
- job: StagingVars
dependsOn:
variables:
- group: "Staging"
steps:
- powershell: >-
echo "##vso[task.setvariable variable=apimServiceName;isOutput=true]$(apimServiceName)"
echo "##vso[task.setvariable variable=apimPrefix;isOutput=true]$(apimPrefix)"
name: setvarStep
- job: ProdVars
dependsOn:
variables:
- group: "Prod"
steps:
- powershell: >-
echo "##vso[task.setvariable variable=apimServiceName;isOutput=true]$(apimServiceName)"
echo "##vso[task.setvariable variable=apimPrefix;isOutput=true]$(apimPrefix)"
name: setvarStep
然后,在新作业中使用变量,在其中指定新变量名称并导航到作业输出以获取值,这是有效的,因为每个变量组都放入自己的作业中,因此它们不会覆盖任何变量:
- job:
dependsOn:
- StagingVars
- ProdVars
variables:
ServiceNameSource: "$[ dependencies.StagingVars.outputs['setvarStep.apimServiceName'] ]"
UrlprefixSource: "$[ dependencies.StagingVars.outputs['setvarStep.apimPrefix'] ]"
ServiceNameDestination: "$[ dependencies.ProdVars.outputs['setvarStep.apimServiceName'] ]"
UrlprefixDestination: "$[ dependencies.ProdVars.outputs['setvarStep.apimPrefix'] ]"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)