Azure DevOps 构建定义和管道之间有啥区别和关系?

Posted

技术标签:

【中文标题】Azure DevOps 构建定义和管道之间有啥区别和关系?【英文标题】:What is the difference and relationship between an Azure DevOps Build Definition, and a Pipeline?Azure DevOps 构建定义和管道之间有什么区别和关系? 【发布时间】:2021-04-29 03:25:18 【问题描述】:

我正在尝试使用 REST API 自动化 Azure DevOps 中的流程。我认为应该是这样的(至少,这是目前的手动流程):

分叉回购 在新分叉的存储库中使用 YAML 文件创建管道 以特定方式运行管道

我是 Azure DevOps REST API 的新手,我很难理解我做了什么以及应该做什么。

使用 REST API,我似乎能够使用管道端点创建我称之为管道的东西;我确实注意到,如果我想运行它,我必须与其构建定义进行交互。

此外,看看其他同事编写的代码,似乎(尽管我可能错了)他们能够通过简单地创建构建定义而不是显式创建管道来实现相同的目标。

这种缺乏理解让我发疯,所以我希望有人能启发我!

问题

构建定义和管道之间有什么区别和关系?


附加信息,我对使用较旧的 Release Pipelines 不感兴趣,我已尝试在 Azure DevOps REST API 文档中找到答案,但无济于事。

【问题讨论】:

【参考方案1】:

如果您想创建一个管道,您可以同时使用这两种方法。但是,区别实际上是在概念上:

构建定义是第一个可用流程的一部分,其中包括:构建和发布,其中 build 负责构建、测试和发布工件以供以后在发布中使用以进行部署 管道是一种新方法,它利用 YAML 设计的流程来构建/测试/部署代码

更多信息你可以找到here - Whats the difference between a build pipeline and a release pipeline in Azure DevOps?

例如对于这个管道/构建

https://dev.azure.com/thecodemanual/DevOps%20Manual/_build?definitionId=157

定义 ID 为 157

您将在两个端点中获得回复:

https://dev.azure.com/organization/project/_apis/build/definitions/157?api-version=5.1

https://dev.azure.com/organization/project/_apis/pipelines/157?api-version=6.0-preview.1

在这个术语中,管道 id = build id

【讨论】:

我不相信可以使用管道端点创建一个有效的 YAML 管道。只有定义端点可以工作。【参考方案2】:

管道端点不是很有用:

https://dev.azure.com/Organization/ProjectName/_apis/pipelines?api-version=6.0-preview.1

它只会给你一个管道列表,其中包含非常基本的信息,例如名称、ID、文件夹等。

要创建和更新 YAML 管道,您需要使用构建定义端点。您在端点中使用的 ID 与 Pipelines 端点使用的 ID 相同。

获取定义、获取列表、创建、更新:

https://dev.azure.com/Organization/ProjectName/_apis/build/definitions?api-version=6.0

(要创建工作管道,您必须首先获取现有管道,修改收到的 JSON,然后将其作为新定义发布。)

【讨论】:

以上是关于Azure DevOps 构建定义和管道之间有啥区别和关系?的主要内容,如果未能解决你的问题,请参考以下文章

Azure Devops 构建管道 - 未发布文件

如何删除它声称由发布保留的 Azure DevOps 构建定义?

如何在 Azure devops 中设置构建管道 [关闭]

Azure DevOps 管道“查看更改”显示错误的更改数量

Azure DevOps 构建管道自托管代理“设备上没有剩余空间”

在 Azure DevOps 中使用构建管道运行 Google 测试