首页 > 解决方案 > 多项目的 Azure Devops CI 管道触发器

问题描述

我有以下结构:

在 Azure Devops 上创建的 Test-A 和 Test-B 项目。Test-A 项目的 CI 构建管道将生成一个工件。

Test-B 的管道在其构建中使用由 Test-A 的 CI 管道生成的工件。我可以下载 Test-A 项目的构建工件并使用它。

我在这里面临的问题是我无法在项目 Test-B 中使用项目 Test-A 依赖项执行 CI 自动触发,即当我进行更改并将更改推送到 Test-A github repo 或每当我执行新操作时在 Test-A 上构建我希望 Test-B 的构建自动启动。

我已阅读有关 Azure devops 的文档,但它们无法正常工作。

管道触发器的链接

管道多触发器的链接

下面是我的 .yml 文件。

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'


resources:
  pipelines:
  - pipeline: JustAName
    project: Test-A
    source: Test-A_CI
    branch: master
    trigger: 
      branches:
        include: 
        - master

  repositories:
  - repository: justAnotherName
    type: github
    name: myGitRepo
    endpoint: myGitServiceConnection   
    trigger:    
      branches:  
        include:  
        - master

steps:

- task: DownloadPipelineArtifact@2
  inputs:
    buildType: 'specific'
    project: 'hashValue or Test-A'
    definition: '1'
    specificBuildWithTriggering: true
    buildVersionToDownload: 'latest'
    targetPath: '$(Agent.BuildDirectory)'

我不确定我在哪里做错了,或者是否是权限问题。我检查了日志以找到 yml 中资源部分的任何参考,但我没有运气。

有人可以建议检查问题并解决问题的最佳方法。

在经典编辑器中禁用构建完成选项 在此处输入图像描述

标签: azure-devopsazure-pipelines

解决方案


对于您的问题,Azure DevOps 市场中有一个自定义任务:触发 Azure DevOps 管道。通过此任务,您可以从同一项目或组织中的另一个管道触发构建或发布管道,也可以在另一个项目或组织中触发。

要开始使用 PAT,需要具有执行管道的适当权限。根据您的方案授予 PAT 以下权利:

  • 触发构建:构建 - 读取和执行

安装扩展后,您可以将此任务添加到 yaml.xml 中。在任务设置中,您需要连接到 Azure DevOps Service 连接。详细配置请参考这里

steps:
- task: TriggerPipeline@1
  inputs:
    serviceConnection: 'triggerpipeline'
    project: 'Test-B'
    Pipeline: 'Build'
    buildDefinition: 'xxx'
    Branch: 'master'

在此处输入图像描述


推荐阅读