Azure devops:管道触发器 CI 在不同存储库的分支上构建

Azure devops: Pipeline Trigger CI build on branch in different repositories

我们如何触发从一个存储库中的提交到另一个存储库中的管道的管道?

基本就是这里详细提到的问题,还没解决:

https://developercommunity.visualstudio.com/content/problem/891431/not-able-to-trigger-ci-build-on-branch-using-pipel.html?inRegister=true

官方文档没有明确说明是否可行 https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=azure-devops&tabs=yaml#pipeline-triggers

我不确定这是否可行,但我前段时间(使用 GIT 回购)使它工作的唯一方法是 git 推送到 "other" 自动触发 "other" 管道

的管道末尾的存储库

编辑: 也许您可以使用 Azure DevOps Service Hooks,在推送的代码上创建一个 WebHook,然后创建一个 REST API 回调到 Azure DevOps 以使用 this

触发管道

此功能仍在开发中。 YAML 管道的多存储库支持将很快用于 azure devops 服务。

此功能将支持根据在多个存储库之一中所做的更改触发管道。请检查 Azure DevOps Feature Timeline or AzureDevOpsRoadmap。预计2020年Q1推出azure devops服务


目前,您可以按照以下解决方法使用构建完成来实现上述目标(管道将在另一个构建完成时触发)。

假设有回购 A 和回购 B。您希望在推送到 A 的提交时触发 B 中的管道。

1,为repo A创建一个空的经典流水线作为触发流水线,永远成功,什么都不做。

2,并选中“触发器”选项卡下的“启用持续集成”并为此触发管道设置 Bracnh 过滤器,以确保在推送提交时触发此空管道。

3、在 Repo B 管道中设置构建完成触发器。

在Repo B edit页面的yaml pipeline中,点击右上角的3dots,然后点击触发器。然后点击Build Completion旁边的+Add和select上面的触发管道作为触发构建。 (也可以在Repo B的yaml pipeline中定义pipeline trigger,pipeline trigger勾选here

4、如果要构建Repo A的代码,还需要在Repo B的pipeline中多做一步配置checkout repo。

在 Repo B 的管道中使用 Checkout 检出管道中 Repo A 的代码。请参考以下例子:

steps: 
  - checkout: git://MyProject/Repo A@refs/heads/master # Azure Repos Git repository in the same organization

  - task: TaskName
     ...