如何在 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:
虽然这些不是我原来的设置,但我已将设置更新为尽可能开放(无限制)。然后我尝试了以下操作:
- 我向 RepoB 中的 b运行ch 提交了一个文件。没有 CI 触发器发生。
- 删除管道,然后重新创建。我向 RepoB 中的 b运行ch 提交了一个文件。 CI终于触发了!
我认为这是一个错误,因为 none 这些设置应该限制这种情况,原因如下:
- 两个回购协议都在同一个项目中。
- 管道中明确引用了 RepoB。
此外,您不必为了使设置生效而删除并重新创建管道。
更新 2:
我将其缩小到此组织或项目级别设置:Limit job authorization scope to referenced Azure DevOps repositories
此设置的文档根本没有提到 CI 触发器,但我认为无论如何它都不会影响这种情况,因为 repo 已被明确引用。
文档参考:
- https://docs.microsoft.com/en-us/azure/devops/pipelines/process/access-tokens?view=azure-devops&tabs=yaml#limit-job-authorization-scope-to-referenced-azure-devops-repositories
- https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#limit-job-authorization-scope-to-referenced-azure-devops-repositories
我认为这是一个错误,我已在此处报告:
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。
我希望我的 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:
虽然这些不是我原来的设置,但我已将设置更新为尽可能开放(无限制)。然后我尝试了以下操作:
- 我向 RepoB 中的 b运行ch 提交了一个文件。没有 CI 触发器发生。
- 删除管道,然后重新创建。我向 RepoB 中的 b运行ch 提交了一个文件。 CI终于触发了!
我认为这是一个错误,因为 none 这些设置应该限制这种情况,原因如下:
- 两个回购协议都在同一个项目中。
- 管道中明确引用了 RepoB。
此外,您不必为了使设置生效而删除并重新创建管道。
更新 2: 我将其缩小到此组织或项目级别设置:Limit job authorization scope to referenced Azure DevOps repositories
此设置的文档根本没有提到 CI 触发器,但我认为无论如何它都不会影响这种情况,因为 repo 已被明确引用。
文档参考:
- https://docs.microsoft.com/en-us/azure/devops/pipelines/process/access-tokens?view=azure-devops&tabs=yaml#limit-job-authorization-scope-to-referenced-azure-devops-repositories
- https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#limit-job-authorization-scope-to-referenced-azure-devops-repositories
我认为这是一个错误,我已在此处报告: 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 默认启用一些资源访问限制。请检查此项目是否在项目设置页面中启用了以下选项。
有关详细信息,请参阅:Access repositories, artifacts, and other resources。