【问题标题】:How to propgate matrix definition across multiple stages in Azure Pipelines如何在 Azure Pipelines 中的多个阶段传播矩阵定义
【发布时间】: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


【解决方案1】:

恐怕我们不能在Stage B中修改Stage A的矩阵输出。你需要在Stage B中定义一个新的输出,然后在Stage C中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 2020-03-05
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多