azure-devops - 通过 VSTS Release Multi-Configuration Phase 两个变量,但只有一个乘数
问题描述
我有一个 VSTS 发布定义,它传递了两个变量,我无法控制其内容。它们包含一个逗号分隔的名称字符串和一个逗号分隔的 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"
如果我将乘数设置为 ID 变量,它只运行阶段正确的次数,但我不知道如何将相应的名称传递到阶段。
这甚至可能吗?
提前致谢!
解决方案
要使多配置阶段为IDs
变量中的每个项目运行一次,并使当前 ID 和名称都可用于该阶段:
IDs
按照 Marina Liu 的建议,将 Multipliers 字段设置为变量。这会为每个阶段运行一次,ID
电流ID
存储在IDs
变量中。添加一个名为 this 的空变量
CurrentName
将存储与该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)
。
推荐阅读
- laravel - 删除软删除中的数据包括媒体文件
- css - 重新加载时的样式不一致(?)(nextjs项目)
- sql - 在 sqlite 中可以进行此查询吗?
- python-3.x - HBase 与多列的一对多关系
- c# - ASP.NET 4.6 MVC 如何返回包含正确时区的日期时间数据的 Json 结果?
- parameters - 请你能解释一下这些avconv参数吗?
- linux - 如何在 bash 脚本中为命令输出着色?
- c# - 在 C# 中改进 Web 浏览器 URL 导航过程的线程概念
- icalendar - 文件 .ics 删除 Outlook 无法识别的约会
- visual-studio-code - jupyter笔记本中的VS代码?