Azure devops 传递VST会释放多个配置阶段两个变量,但只有一个乘数
我有一个VSTS发布定义,它传递了两个变量,我不控制这些变量的内容。它们包含一个以逗号分隔的名称字符串和一个以逗号分隔的ID字符串,这些ID与按索引列出的名称相对应 我想使用一个代理阶段,该阶段配置为并行选项设置为multi-configuration,乘数字段设置为ID字符串,因此该阶段对每个ID运行一次。我还想使用与该阶段中的ID相对应的名称,但我不确定如何做到这一点 如果我将乘数设置为两个变量(ID和Name),它将运行两个数组的笛卡尔积(交叉连接)的阶段,这是不需要的 例如:Azure devops 传递VST会释放多个配置阶段两个变量,但只有一个乘数,azure-devops,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines Release Pipeline,我有一个VSTS发布定义,它传递了两个变量,我不控制这些变量的内容。它们包含一个以逗号分隔的名称字符串和一个以逗号分隔的ID字符串,这些ID与按索引列出的名称相对应 我想使用一个代理阶段,该阶段配置为并行选项设置为multi-configuration,乘数字段设置为ID字符串,因此该阶段对每个ID运行一次。我还想使用与该阶段中的ID相对应的名称,但我不确定如何做到这一点 如果我将乘数设置为两个变量(ID和Name),它将运行两个数组的笛卡尔积(交叉连接)的阶段,这是不需要的 例如:
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变量,那么它只会运行阶段正确的次数,但我不知道如何将相应的名称传递到阶段
这可能吗
提前谢谢 如果要运行三次阶段(
A1 Anna
、A2 Adam
和A3 Abby
),只需将一个变量指定为乘数(无论变量ID或名称),并从另一个变量中筛选相应的项
例如,每次使用变量IDs
作为乘法器,并从变量Names
中筛选相应的名称,您可以使用以下步骤:
1.将ID指定为乘数
2.获取代理阶段上每次运行的ID
将变量IDs
指定为乘数后,代理将运行三次:A1
、A2
和A3
每次在代理阶段运行时,您可以通过变量$(ID)
获取相关ID:
- 运行阶段
时,变量A1
值为$(IDs)
李>A1
- 运行阶段
时,变量A2
值为$(IDs)
李>A2
- 运行阶段
时,变量A3
值为$(IDs)
A3
由于可以获得每次运行的ID,因此可以通过一些定义的规则获得与ID对应的名称。例如,使用if条件获取正确的名称,或解析ID的索引并获取相应的名称等。使多配置阶段对
IDs
变量中的每个项目运行一次,并使当前ID和名称在阶段中可用:
IDs
变量。这将为每个ID
运行一次阶段,当前ID
存储在IDs
变量中CurrentName
的空变量,这将存储与IDs
变量关联的名称$names=“$(names)”.Split(“,”,[System.StringSplitOptions]::removemptyEntries)
写入主机“##vso[task.setvariable=CurrentName]$($names[[int]“$(SYSTEM.JOBPOSITIONINPHASE)”-1])”
脚本使用内置的System.JobPositionInPhase
变量(包含当前正在运行的阶段的索引)从Names
变量获取当前阶段的名称,并将其存储在CurrentName
变量中
您可以在阶段中的任何位置使用
$(CurrentName)
来获取与$(ID)
关联的名称值。我看不出名称和ID是如何关联的。@DanielMann名称和ID是通过索引关联的。所以在上面的例子中,“A1”和“Anna”是相关的。我更新了这个问题以帮助澄清。你不能使用乘数来实现你想要的。让我们后退一步。这些值实际用于什么?它们来自哪里?有人知道如何在bash中为运行在macOS代理上的构建执行此操作吗?