适用于多个项目的Azure Devops CI管道触发器

时间:2019-12-27 17:21:44

标签: azure-devops azure-pipelines

我具有以下结构:

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

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

我在这里面临的问题是我无法使用项目Test-B中的项目Test-A依赖项执行CI自动触发,即无论何时进行更改并将更改推送到Test-A github存储库上在Test-A上进行新的构建我希望Test-B的构建自动开始。

我已经阅读了有关Azure开发人员的文档,但是它们不起作用。

Link for pipeline trigger

Link for pipeline multi-trigger

下面是我的.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中找到有关资源部分的任何参考,但是我没有运气。

有人可以建议什么是检查问题和解决问题的最佳方法。

构建完成选项在经典编辑器中被禁用 enter image description here

2 个答案:

答案 0 :(得分:1)

管道经典编辑器中的构建完成选项仅限于同一项目中的管道。因此,即使已启用,它也不适用于您的方案(触发管道和触发管道位于不同的项目中)。

对于问题,构建完成选项已禁用。您可以here报告此问题。点击报告问题,然后选择 Azure Devops

资源管道触发器有时无法正常工作。其他一些用户已将类似的问题提交给Microsoft。您可以关注这些案例并对其进行投票,也可以创建一个新案例。 Build Completion Triggers not workingPipeline trigger not working as expressed in documentation

您可以使用@Hugh给出的任务TriggerPipeline遵循解决方法。您还可以添加powershell任务以将其余api调用到queue another build管道中。您可以查看此thread以获取示例脚本

答案 1 :(得分:0)

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

要开始使用PAT,需要具有执行管道的适当权限。根据您的情况为PAT提供以下权限:

  • 触发构建:构建–读取并执行

安装扩展程序后,可以将此任务添加到yaml中。在任务设置中,您需要连接到Azure DevOps Service连接。有关详细配置,请参阅this

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

enter image description here