我正在使用 MS Azure DevOps REST API 从给定分支的最新管道版本下载工件。
definitions
GET 端点(然后按管道名称过滤结果)。
builds
GET 端点 来获取我的构建定义 ID 的最新成功构建。
现在,我的问题是这样的 - 底层管道是为我的源存储库中的不同分支执行的。在基于 Web 的 DevOps UI 中,对于给定的管道运行,它看起来像这样:
其中,第一个源存储库/分支是托管管道 YAML 的存储库/分支。总是一样的。
第二个是我真正感兴趣的;它指示构建是从哪个发布分支执行的。
不幸的是,我无法在从 Build
端点返回的
builds
数据结构中找到此信息;至少不是在直观键入和命名的字段中。有两个名为
repository
和 sourceBranch
的属性,但它们仅包含有关 DevOps Web 界面中列出的 first 存储库/分支的信息。
通过公共 Azure DevOps REST API 检索信息时,如何区分不同版本分支的构建?
基于共享的屏幕截图和描述
底层管道是针对我的源存储库中的不同分支执行的;
第二个是我真正感兴趣的;它指示构建是从哪个发布分支执行的。
看来你已经在这个管道中定义了存储库资源,但对其用法可能存在一些误解。
您尚未共享发布工件的底层 YAML 管道的定义,我们无法了解如何定义/签出
release
存储库的 Application
分支中的存储库资源或如何发布工件。假设您使用下面的简单 YAML 管道,
trigger: none
resources:
repositories:
- repository: app
type: git
name: Application
trigger:
branches:
include:
- release*
steps:
- checkout: self
path: self
- checkout: app
path: app
- powershell: |
tree $(Agent.BuildDirectory)
Write-Host "The Triggering repo is $(Build.Repository.Name)"
Write-Host "The Triggering branch is $(Build.SourceBranch)"
Write-Host "The Triggering branch name is $(Build.SourceBranchName)"
displayName: Show file structure in Agent.BuildDirectory
- publish: $(Agent.BuildDirectory)/self
artifact: self
displayName: Publish artifacts from self
- publish: $(Agent.BuildDirectory)/app
artifact: $(Build.SourceBranchName)_$(Build.Repository.Name)
displayName: Publish artifacts from app
它将由
release*
存储库中 Application
分支上的任何提交触发;
一旦触发管道,它就会将
self
存储库和app
存储库中的代码检出到Agent.BuildDirectory
下的相对路径中; App
资源库中的代码是根据触发提交推送到的分支动态检出的。
管道然后继续发布别名为
self
和 $(Build.SourceBranchName)_$(Build.Repository.Name)
的 2 个工件
要下载预期的工件,您可以使用下面的 API 和选定的工件别名。
GET https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs/{runId}/artifacts?artifactName={artifactName}&api-version=7.1-preview.1