我想使用matrix strategy在Azure Pipelines中生成作业,但不想通过显式列出所有可能的组合来生成作业。 而不是:
matrix:
core211:
module: core
scala: 2.11
python211:
module: python
scala: 2.11
libraries211:
module: ibraries
scala: 2.11
core212:
module: core
scala: 2.12
python212:
module: python
scala: 2.12
libraries212:
module: libraries
scala: 2.12
我想做
matrix:
combinations:
module: ["libraries", "python", "core"]
scala: ["2.11", "2.12"]
生成上述矩阵。 使用Azure Pipelines可以做到这一点吗?
我从Travis CI获得了这种方法。
答案 0 :(得分:1)
Azure Pipelines是否可行?
恐怕答案是否定的。目前,这不是受支持的方案。
关于yaml中的Matrix模式,请检查this document:
strategy:
matrix: { string1: { string2: string3 } }
maxParallel: number
它等于:
matrix:
string1:
string2: string3
.
.
.
string1:
string2: string3
.
.
.
根据文档: 对于矩阵中的每个string1,将生成作业的副本。字符串1是副本的名称,并将添加到作业名称之后。
因此,如果我们要生成6个作业,那么现在我们必须列出6个“ string1
”。 (这意味着我们确实需要明确列出所有可能的组合...)
此外:
除了否定答案,我认为您想要的是一个好主意!因此,我在here中发布了功能请求DC forum。任何对此感兴趣的人都可以为其投票并进行跟踪。希望以上所有对您有所帮助:)
答案 1 :(得分:0)
是的,有可能。通过creating a JSON at runtime使用bash
/ script
/ powershell
/ pwsh
并将其用于矩阵策略:
jobs:
- job: generator
steps:
- bash: echo "##vso[task.setVariable variable=legs;isOutput=true]{'a':{'myvar':'A'}, 'b':{'myvar':'B'}}"
name: mtrx
# This expands to the matrix
# a:
# myvar: A
# b:
# myvar: B
- job: runner
dependsOn: generator
strategy:
matrix: $[ dependencies.generator.outputs['mtrx.legs'] ]
steps:
- script: echo $(myvar) # echos A or B depending on which leg is running