我有两个管道,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 不支持此类语法
$(resources.pipeline.PipelineA.repositories['repo2'].sourceBranch)
。
根据管道资源变量,
在每次运行中,管道资源的元数据可作为预定义变量供所有作业使用。这些变量仅在运行时可供您的管道使用。
但是资源在运行时之前就已解析,因此,您不能在存储库资源中使用管道变量。
此外,如果将repo资源的
ref
设置为一个分支,则只能确保两个管道检出相同的分支,而不是相同的提交。