azure-devops - 多项目的 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 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'
推荐阅读
- pycharm - 强制刷新外部库不起作用
- apache-spark - Spark - 在 16 GB RAM 单机中将 54 GB CSV 文件转换为单个 JSON
- c# - 如何正确将 AutomationId 属性设置为 ItemsControl?
- sql - Azure SQL Server:无法删除外部数据源,因为它正在被使用
- java - 如何让 maven 识别我的 jdk 版本?
- angular - 在 Mozilla Firefox 中不起作用 ngx-dropdown(在 Chrome 中运行良好)
- java - ClassNotFoundException: javax.servlet.jsp.JspFactory
- php - 如何在 codeigniter 中设置会话并在方法中访问它?
- python-3.x - Colab:没有这样的文件或目录
- selenium-webdriver - 在 TestNG 中并行运行测试时出现奇怪问题,如果按顺序运行则可以正常工作