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

What is the difference and relationship between an Azure DevOps Build Definition, and a Pipeline?

我正在尝试使用 REST API 在 Azure DevOps 中自动化一个流程。我觉得应该是这样的(至少,目前的人工流程是这样的):

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

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

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

这种不理解快把我逼疯了所以我希望有人能开导我!

问题

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


其他信息,我对使用较旧的发布管道不感兴趣,我试图在 Azure DevOps REST API 文档中找到答案,但无济于事。

如果你想创建一个管道,你可以同时使用这两个。不过,实际上是概念上的区别:

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

您可以找到更多信息

例如这个 pipeline/build

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

在该术语中,pipeline id = build id

管道端点不是很有用:

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,然后 POST 将其作为新定义。)