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

时间:2020-03-12 14:39:44

标签: git azure azure-devops azure-pipelines azure-triggers

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

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

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

2 个答案:

答案 0 :(得分:3)

此功能仍在开发中。天蓝色的devops服务将很快提供对YAML管道的多存储库支持。

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


当前,您可以按照以下变通方法使用Build Completion(构建完成)来实现以上目的(管道将在另一个构建完成时触发)。

我们说有回购A和回购B。您希望B中的管道在推送到A的提交时被触发。

1,为回购A创建一个空的经典管道作为触发管道,该管道将始终成功并且不执行任何操作。

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

enter image description here

3,在回购B管道中设置“构建完成”触发器。

在回购B 编辑页的yaml管道中,单击右上角的 3点,然后单击触发器。然后单击 Build Completion (构建完成)旁边的+ Add(添加),然后选择上面在第1步中创建的触发管道作为触发构建。 (您还可以在Repo B的yaml管道中定义管道触发器,请检查here的管道触发器)

enter image description here

4,如果要构建存储库A的代码,则还需要执行另一步骤以在存储库B的管道中配置结帐存储库。

在回购B的管道中,使用Checkout来检查管道中回购A的代码。请参考以下示例:

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

  - task: TaskName
     ...

答案 1 :(得分:0)

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

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

创建对Azure DevOps的REST API调用以触发管道