指定多个存储库的 ADO 管道能否用作另一个管道的资源并引用提交 ID?

问题描述 投票:0回答:1

我有两个管道,PipelineA 和 PipelineB

管道 A 针对存储库 1 运行,并引用存储库 2 和 3。

管道 B 也针对存储库 1 运行,并引用存储库 2 和 3。它引用管道 A。

我需要在两个管道中检查存储库 2 和 3 的相同提交;如果可能的话,我不想为 pipelineB 手动指定它们,而是自动从引用的 pipelineA 中获取它们。

我知道在存储库 ref arg 中我可以使用类似的变量

resources:
  pipelines:
    -pipeline: PipelineA
     source: PipelineA  

  repositories:
    -repository: Repo2
     type: git
     name: Repo2
     ref: $(myVar)

    -repository: Repo3
     type: git
     name: Repo3
     ref: $(myVar)

如果我引用单个回购管道,我可以做类似的事情

$(resources.pipeline.PipelineA.sourceBranch)

我的问题是,有什么方法可以将这两者结合起来用于每个特定的存储库?就像下面这样

resources:
  pipelines:
    -pipeline: PipelineA
     source: PipelineA  

  repositories:
    -repository: Repo2
     type: git
     name: Repo2
     ref: $(resources.pipeline.PipelineA.repositories['repo2'].sourceBranch)

    -repository: Repo3
     type: git
     name: Repo3
     ref: $(resources.pipeline.PipelineA.repositories['repo3'].sourceBranch)
azure-devops yaml azure-pipelines azure-pipelines-yaml
1个回答
0
投票

有什么方法可以将这两者结合起来用于每个特定的存储库

Azure DevOps 不支持此类语法

$(resources.pipeline.PipelineA.repositories['repo2'].sourceBranch)

根据管道资源变量

在每次运行中,管道资源的元数据可作为预定义变量供所有作业使用。这些变量仅在运行时可供您的管道使用。

但是资源在运行时之前就已解析,因此,您不能在存储库资源中使用管道变量。

此外,如果将repo资源的

ref
设置为一个分支,则只能确保两个管道检出相同的分支,而不是相同的提交。

© www.soinside.com 2019 - 2024. All rights reserved.