如何在与 YAML 管道所在位置不同的 Azure 存储库上创建 CI 触发器?

时间:2021-01-18 22:31:57

标签: azure-devops azure-pipelines azure-pipelines-yaml

我希望我的 YAML 在一个 repo RepoA 中,而我的代码在 RepoB 中构建。如何将 YAML 配置为仅在代码 RepoB 上具有 CI 触发器? 注意:这些存储库位于同一个 Azure DevOps 项目中。 YAML 位于 RepoA 的默认分支(master)中。我已经看到如果管道不在默认分支中,人们会遇到 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 中的 master 分支时,管道从未运行过。

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 的触发器吗? Pipeline Triggers Screenshot

更新 1:

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

  1. 我向 RepoB 中的分支提交了一个文件。未发生 CI 触发器。
  2. 删除管道,然后重新创建。我向 RepoB 中的分支提交了一个文件。 CI Trigger 终于发生了! Pipeline settings screenshot

我认为这是一个错误,因为出于以下原因,这些设置都不应该限制这种情况:

  • 两个存储库都在同一个项目中。
  • 在管道中明确引用了 RepoB。

此外,您不应该删除并重新创建管道以使设置生效。

更新 2: 我将其缩小到此组织或项目级别设置:将作业授权范围限制为引用的 Azure DevOps 存储库

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

文档参考:

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

2 个答案:

答案 0 :(得分:0)

我使用了你的 yaml 和所有作品(唯一的区别是我有主分支而不是主分支)

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

enter image description here

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

答案 1 :(得分:0)

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

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

请参阅:Access repositories, artifacts, and other resources 了解详情。