是否有人有在 Azure DevOps 分支上设置构建验证管道的经验,其中 YAML 托管在与设置分支策略的存储库不同的存储库中? 示例:
Repo A - 这是存储验证管道 YAML 的位置。
我们已尝试进行上述设置,但遇到了问题。尽管针对存储库 B、C、D 等内的主分支的拉取请求正确显示了构建验证,但管道不会自动触发。
此外,当我们单击 PR 概览中的“队列”按钮时,管道不会执行。根本什么也没有发生;没有管道运行,没有反馈,任何地方都看不到任何东西,并且按钮仍然可单击(见下图)。
下面是 repo A 中重现该问题的 YAML 的简单示例:
name: $(date:yyyyMMdd)$(rev:.r)
pool:
name: 'default'
pr:
branches:
include:
- main
jobs:
- job: AssertPSRule
steps:
- task: PowerShell@2
inputs:
targetType: inline
script: |
Write-Host $(Build.Repository.Name)
我建议您在存储库 A 中创建可重用的阶段或作业模板,以便可以在其他存储库中轻松重用。或者,作为替代方案,创建某种
base管道(使用 extends templates)。 存储库 A 中的基本管道示例:
parameters:
- name: foo
type: string
jobs:
- job: AssertPSRule
steps:
- checkout: self # checkout the repository that contains the pipeline
- task: PowerShell@2
inputs:
targetType: inline
script: |
Write-Host $(Build.Repository.Name)
添加到存储库 B、C、D 等的 YAML 管道:
# my-pipeline.yaml
resources:
repositories:
- repository: shared
type: git
name: A
ref: releases/1.0.0
extends:
template: /pipelines/base-pipeline.yaml@shared
parameters:
foo: '123456'