azure - 循环遍历 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"
}
测试结果:
在这种情况下,我们可以创建一个具有名称的资源。
您可以查看文档条件以获取更多详细信息。
推荐阅读
- django - 使用来自另一个的几个特定字段
- plotly-dash - 如何在不破坏 dcc.RangeSlider 的情况下删除时间戳?
- node.js - 为 IBM Block chain Hyperledger Fabric 运行enrollAdmin.js 时遇到错误
- networking - 无法将 2 个 Centos 虚拟机相互连接
- r - 如何在 R 中突出显示 knitr 和 kable 包中的特定单元格
- crm - 动态crm在线9.2版定期约会表单显示bug
- java - 如何实现从活动返回到调用它的片段
- html - 我在 html 文件中有网格,但我看不到它
- google-sheets - 如何在 SUMIF 公式中使用 REGEXEXTRACT 值?
- vb6 - VB6 + Crystal report 8.5 不刷新数据