循环通过Azure管道中的变量 [英] Looping through variables in Azure pipeline
本文介绍了循环通过Azure管道中的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文本文件,其中有两个名称client1
和client2
。
我有一个用于读取文本文件的Powershell脚本,我对它的理解是它已经创建了一个数组。
$clientvariable = Get-Content -Path {FilePath}/{File};
Write-Host "vso[task.setvariable variable=clientname]$clientvariable
因此,现在clientName的值$clientVariable设置为client1 client2
,如果需要,我可以为每个位置编制索引。
如何在Azure管道YAML中使用它,以便可以逐个查看和循环每个名称?
目标是获取每个名称,并结合ARM模板(即client1SQLserver
client2SQLserver
我已经看到您可以使用带有参数的模板来创建for循环,那么在这种情况下是否可以这样做,或者有没有其他方法可以实现我正在寻找的功能?
推荐答案
如何在Azure管道YAML中使用它,以便可以逐个查看和循环每个名称?
我们可以指定作业根据上一个作业中设置的输出变量的值运行,以分别循环每个名称。
因为我没有文本文件名,所以我在示例中使用自定义字符数组而不是文件名,如$FileNames = '"test1","test2","test3","test4"'
:
我的Azure管道YAML文件:
trigger:
branches:
include:
- master
stages:
- stage: LoopFileName
jobs:
- job: A
pool:
name: MyPrivateAgent
steps:
- task: PowerShell@2
condition: succeeded()
displayName: "Create a list"
inputs:
targetType: 'inline'
script: |
$FileNames = '"test1","test2","test3","test4"'
Write-Host "##vso[task.setvariable variable=LoopFileName;isOutput=true]$FileNames"
name: fileoutput
- job: B
dependsOn: A
pool:
name: MyPrivateAgent
variables:
AllFileNames: $[dependencies.A.outputs['fileoutput.LoopFileName']]
steps:
- template: loopTemplate.yml
parameters:
files : $(AllFileNames)
然后loopTemplate.yml
文件:
parameters:
files: []
steps :
- task: PowerShell@2
displayName: 'Fetching ValueFiles'
inputs:
targetType: 'inline'
script: >
foreach ($i in ${{parameters.files}})
{
Write-Host "filenames=$i"
}
测试结果:
在这种情况下,我们可以创建名为的资源。
您可以查看文档Conditions了解更多详细信息。
这篇关于循环通过Azure管道中的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文