msd*_*rds 4 azure-devops azure-pipelines-release-pipeline
我有一个 VSTS Release Definition,它传递了两个变量,我无法控制其中的内容。它们包含一个逗号分隔的名称字符串和一个逗号分隔的 ID 字符串,它们与按索引的名称相对应。
我想使用一个代理阶段,将并行选项设置为多配置,并将乘数字段设置为 ID 字符串,因此该阶段为每个 ID 运行一次。我还想使用与该阶段中的 ID 对应的名称,但我不确定如何执行此操作。
如果我将乘数设置为两个变量(ID 和名称),它会运行两个数组的笛卡尔积(交叉连接)的阶段,这是不需要的。
例子:
IDs: "A1, A2, A3"
Names: "Anna, Adam, Abby"
Runs the phase 9 times: "A1" & "Anna", "A2" & "Anna", "A3" & "Anna"
"A1" & "Adam", "A2" & "Adam", "A3" & "Adam"
"A1" & "Abby", "A2" & "Abby", "A3" & "Abby"
Run Code Online (Sandbox Code Playgroud)
如果我将乘数设置为 ID 变量,它只会运行阶段正确的次数,但我无法弄清楚如何将相应的名称传递到阶段。
这甚至可能吗?
提前致谢!
要使多配置阶段为IDs变量中的每个项目运行一次,并使当前 ID 和名称都可用于该阶段:
IDs按照 Marina Liu 的建议将 Multipliers 字段设置为变量。这对每个阶段运行一次,ID电流ID存储在IDs变量中。添加一个名为CurrentNamethis的空变量将存储与IDs变量关联的名称。
将内联 Powershell 脚本任务添加到代理阶段,其中包含以下命令:
$names = "$(Names)".Split(", ",[System.StringSplitOptions]::RemoveEmptyEntries)
Write-Host "##vso[task.setvariable variable=CurrentName]$($names[[int]"$(SYSTEM.JOBPOSITIONINPHASE)" - 1])"
该脚本使用内置System.JobPositionInPhase变量(包含当前正在运行的阶段的索引)从Names变量中获取当前阶段的名称并将其存储在CurrentName变量中。
您可以使用$(CurrentName)阶段中的任何位置来获取与 关联的名称的值$(IDs)。
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |