Azure devops 传递VST会释放多个配置阶段两个变量,但只有一个乘数

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),它将运行两个数组的笛卡尔积(交叉连接)的阶段,这是不需要的 例如:

我有一个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
3.每次在代理阶段上运行时,从Names变量中筛选相应的名称
由于可以获得每次运行的ID,因此可以通过一些定义的规则获得与ID对应的名称。例如,使用if条件获取正确的名称,或解析ID的索引并获取相应的名称等。

使多配置阶段对
IDs
变量中的每个项目运行一次,并使当前ID和名称在阶段中可用:

  • 按照Marina Liu的建议,将乘数字段设置为
    IDs
    变量。这将为每个
    ID
    运行一次阶段,当前
    ID
    存储在
    IDs
    变量中
  • 添加名为
    CurrentName
    的空变量,这将存储与
    IDs
    变量关联的名称

  • 将内联Powershell脚本任务添加到包含以下命令的代理阶段:

  • $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代理上的构建执行此操作吗?