0

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

基本上是这里详细提到的问题尚未解决:

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

4

2 回答 2

4

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

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


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

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

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

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

在此处输入图像描述

3、在 Repo B 管道中设置 Build Completion 触发器。

在 Repo B编辑页面的 yaml pipeline 中,点击右上角的3dots,然后点击Triggers然后单击Build Completion旁边的 +Add并选择上面在步骤 1 中创建的触发管道作为触发构建。(也可以在 Repo B 的 yaml 管道中定义管道触发器,查看管道触发器这里

在此处输入图像描述

4、如果要构建Repo A的代码,还需要多做一步,在Repo B的管道中配置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
     ...
于 2020-03-13T08:23:31.427 回答
0

我不确定它是否可能,但我前段时间(使用 GIT 存储库)完成这项工作的唯一方法是在一个管道末端执行 git push 到“其他”存储库,这会自动触发“其他”管道

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

于 2020-03-12T18:42:49.060 回答