我具有以下结构:
在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 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中找到有关资源部分的任何参考,但是我没有运气。
有人可以建议什么是检查问题和解决问题的最佳方法。
答案 0 :(得分:1)
管道经典编辑器中的构建完成选项仅限于同一项目中的管道。因此,即使已启用,它也不适用于您的方案(触发管道和触发管道位于不同的项目中)。
对于问题,构建完成选项已禁用。您可以here报告此问题。点击报告问题,然后选择 Azure Devops 。
资源管道触发器有时无法正常工作。其他一些用户已将类似的问题提交给Microsoft。您可以关注这些案例并对其进行投票,也可以创建一个新案例。 Build Completion Triggers not working,Pipeline 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'