如何在 YAML 管道所在的不同 Azure Repo 上创建 CI 触发器?

How to create a CI Trigger on a different Azure Repo than where the YAML pipeline resides?

我希望我的 YAML 在一个存储库 RepoA 中,而我的代码在 RepoB 中构建。如何将 YAML 配置为仅在代码 RepoB 上有一个 CI 触发器? 注意:这些存储库位于同一个 Azure DevOps 项目中。 YAML 在 RepoA 的默认 b运行ch (master) 中。我已经看到如果管道不在默认 b运行ch.

中,人们会遇到 CI 触发器的问题

这里是 azure-pipeline.yml 内容:

trigger: none
resources:
 repositories:
   - repository: RepoB
     type: git
     name: RepoB
     ref: master
     trigger: 
     - master
pool:
  vmImage: 'windows-latest'
steps:
- checkout: RepoB

我也试过删除那行

trigger: none

看看是否可行。正如我所期望的那样,一旦我保存了 yaml,构建就会开始,但是当我对 RepoB master 进行更改时不会。

然后我尝试了以下和更多的猜测,但没有在 RepoB 上启用 CI 触发器。也就是说,当我向 RepoB 中的主 b运行ch 提交时,管道永远不会 运行。

resources:
 repositories:
   - repository: RepoB
     type: git
     name: RepoB
     ref: master
     trigger: 
       branches:
        include:
          - master
pool:
  vmImage: 'windows-latest'
steps:
- checkout: RepoB

这是我在 Azure Pipelines UI 中查看管道触发器时看到的内容。我应该看到 RepoB 的触发器吗?

更新 1:

虽然这些不是我原来的设置,但我已将设置更新为尽可能开放(无限制)。然后我尝试了以下操作:

  1. 我向 RepoB 中的 b运行ch 提交了一个文件。没有 CI 触发器发生。
  2. 删除管道,然后重新创建。我向 RepoB 中的 b运行ch 提交了一个文件。 CI终于触发了!

我认为这是一个错误,因为 none 这些设置应该限制这种情况,原因如下:

此外,您不必为了使设置生效而删除并重新创建管道。

更新 2: 我将其缩小到此组织或项目级别设置:Limit job authorization scope to referenced Azure DevOps repositories

此设置的文档根本没有提到 CI 触发器,但我认为无论如何它都不会影响这种情况,因为 repo 已被明确引用。

文档参考:

我认为这是一个错误,我已在此处报告: https://developercommunity2.visualstudio.com/t/yaml-pipeline-ci-trigger-for-repository-resource-i/1314241

我使用了你的 yaml 并且一切正常(唯一的区别是我有 main 而不是 master 分支)

trigger: none
resources:
 repositories:
   - repository: RepoB
     type: git
     name: azure-functions
     ref: main
     trigger: 
     - main
pool:
  vmImage: 'windows-latest'
steps:
- checkout: RepoB

在此屏幕上,您有一个触发器,它会触发在 RepoB

上完成的更改

Azure DevOps 默认启用一些资源访问限制。请检查此项目是否在项目设置页面中启用了以下选项。

在我这边测试,如果启用这些选项,则可以重现此问题。因此请禁用它们,并创建一个新的 yaml 管道。新的 yaml 管道应该按预期工作。

有关详细信息,请参阅:Access repositories, artifacts, and other resources