0

我可以使用 Azure DevOps REST API 创建构建定义。当我从门户运行构建定义时,它没有使用azure-pipeline.yml作为 Azure Repos 代码库一部分的文件。管道文件(azure-pipeline.yml)包括将为应用程序构建图像的 docker 任务。但是这个操作不起作用。为了解决这个问题,我创建了两个定义。

  1. 从 Azure DevOps 门户手动创建生成定义。
  2. 使用 Azure DevOps REST API 创建了生成定义。

第一种方法按预期工作。它正在为应用程序创建一个 docker 映像,并且 docker 任务有效。第二种方法不起作用,它只是从存储库中检查源代码。

我遇到了包括管道文件路径的过程参数。我不知道如何使用 REST API 进行配置。

我正在关注此文档https://docs.microsoft.com/en-us/rest/api/azure/devops/build/definitions/create?view=azure-devops-rest-5.1

编辑 1

{
"name": "myapp2",
"badgeEnabled": "true",
"queue": {
    "name": "Hosted Ubuntu 1604",
    "pool": {
        "name": "Hosted Ubuntu 1604",
        "isHosted": true
    }
},
"jobAuthorizationScope": "projectCollection",
"jobTimeoutInMinutes": 60,
"jobCancelTimeoutInMinutes": 5,
"quality": "definition",
"type" : "build",
"process": {
    "type": 2
},
"processParameters" : {
    "inputs" : [{
        "name" : "azure-pipeline.yml",
        "required" : true
    }]
}

其余配置与repositories.

在门户中创建构建定义

在此处输入图像描述

使用 Azure DevOps REST API 创建构建定义

在此处输入图像描述

4

1 回答 1

1

如果您已经拥有 yaml 管道 azure-pipeline.yml,请从上面的帖子中获取。无需调用 Create Definition api 来创建一个以 azure-pipeline.yml 作为参数的同一个。您可以手动或通过Build Queue API调用然后将管道 yaml 排队

如果要使用 api 创建定义,可以先使用Get Definition api 调用现有的构建管道定义,以便您可以参考返回的响应来检查Create Definition api需要配置哪些属性。

这是使用 PowerShell 创建 VSTS 构建定义的示例,此外,除了此博客,您还可以process:{phases:[{steps:}]}通过参考 Get Definition api 的响应来定义管道任务(在 中定义)。

如您所见,使用 api 定义构建管道很复杂,并且不建议在此线程中讨论。创建管道最方便的方法是通过 GUI 手动或使用 yaml。

更新:

如果调用 Get Definition api 获取现有 yaml 管道的 json 格式定义。你会看到没有processParameters属性。processParameters所以在使用 api 创建 yaml 管道时不需要定义属性。仅在 process property 中定义 yaml 文件"process": { "yamlFilename": "azure-pipelines.yml", "type": 2}

出于测试目的,我首先获取了现有 yaml 管道的 json 格式定义,然后对 json 文件进行了一些修改。然后我从 azure 管道 UI 中删除 yaml 管道。最后,我使用Create Definiton API来创建 yaml 管道。然后按预期创建 yaml 管道。

您在问题中发布的最后一个屏幕截图位于经典管道中。Yaml 管道没有该Parameters部分。

属性processParameters将定义此Parameters部分。它用于链接构建定义中使用的任务的所有重要参数。在此处查看有关经典管道中 processParameters 的更多信息。

在此处输入图像描述

于 2020-01-24T04:54:31.533 回答