【发布时间】:2020-10-22 05:02:14
【问题描述】:
我正在 Azure Pipelines 中编写一个多阶段作业,其中涉及从脚本生成矩阵作为阶段的输出。我想在多个阶段使用该矩阵来生成作业,但我想在使用该矩阵的前一阶段的作业上使用条件。
azure-pipelines.yml 示例:
stages:
- stage: A
jobs:
- job: generateMatrix
- stage: B
dependsOn: A
jobs:
- job: "" # This lets the job name be just the name of the matrix key
continueOnError: true # steps in these jobs may or may not fail
strategy:
matrix: $[ stageDependencies.A.generateMatrix.outputs['matrix'] ]
- stage: C
dependsOn: # Needs A's matrix and B job results
- A
- B
jobs:
- job: "" # The job name here should be the same as in stage B
continueOnError: true
strategy:
matrix: $[ stageDependencies.A.generateMatrix.outputs['matrix'] ]
steps:
- script: echo "Job from Stage B Succeeded"
condition: eq(stageDependencies.B.variables['Agent.JobName'].result, 'Succeeded')
- script: echo "Job from Stage B Failed"
condition: condition: ne(stageDependencies.B.variables['Agent.JobName'].result, 'Succeeded')
所以我需要具备以下能力之一:
- 能够参数化stage依赖里面的json路径
- 能够编辑变量并将其添加到阶段 (B) 中的现有矩阵并以某种方式输出。
有没有人知道如何做到这一点?我尝试了上述方法,但失败了。
【问题讨论】:
-
您的意思是要在阶段C中修改阶段B的矩阵值?
-
我希望 Stage B 修改 Stage A 输出的矩阵,然后让 C 读取该矩阵。本质上,在阶段 A 输出的矩阵看起来像
json { "foo": {"var1": "val1"}, ... },我想在该矩阵中添加另一个值,例如json { "foo": {"var1": "val1", "var2": "val2"}, ... } -
我还可以通过在阶段 B 中将“收集”作业作为第二个作业来解决这个问题,该作业可以用更新的值重写矩阵,只要矩阵化作业可以输出将由“收集”作业读取
-
您可以Accept my reply as an Answer 或添加新的回复并接受它,这对阅读此主题的其他社区成员会有所帮助。
标签: azure azure-devops azure-pipelines azure-pipelines-yaml