用于运行构建或管道的 Azure REST API

Yah*_*din 5 azure azure-devops azure-pipelines azure-rest-api

我正在尝试使用其 REST api 为特定分支自动创建 Azure Pipelines。

但是,我很难使用他们几乎所有的 API,因为他们的文档缺少示例。

List 和 Get 之类的东西很简单。

但是,在排队构建时:https : //docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view= azure-devops-rest- 6.0

POST https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=6.0
{
    "parameters": <parameters>, // how do i send paramters
    "definition": {
        "id": 1
    },
    "sourceBranch": "refs/heads/feature/my-pipeline",
    "sourceVersion": "d265f01aeb4e677a25725f44f20ceb3ff1d7d767"
}
Run Code Online (Sandbox Code Playgroud)

我目前正在努力发送参数。我试过了:

简单的 JSON,如:

"parameters": {
    "appId": "bab",
    "platform": "android",
    "isDemo": true
}
Run Code Online (Sandbox Code Playgroud)

和字符串化 JSON 版本,如:

"parameters": "{\"appId\": \"bab\",\"platform\": \"android\",\"isDemo\": true}"
Run Code Online (Sandbox Code Playgroud)

但似乎没有一个工作。

它不断给我错误:

{
    "$id": "1",
    "customProperties": {
        "ValidationResults": [
            {
                "result": "error",
                "message": "A value for the 'appId' parameter must be provided."
            },
            {
                "result": "error",
                "message": "A value for the 'platform' parameter must be provided."
            },
            {
                "result": "error",
                "message": "A value for the 'isDemo' parameter must be provided."
            }
        ]
    },
    "innerException": null,
    "message": "Could not queue the build because there were validation errors or warnings.",
    "typeName": "Microsoft.TeamFoundation.Build.WebApi.BuildRequestValidationFailedException, Microsoft.TeamFoundation.Build2.WebApi",
    "typeKey": "BuildRequestValidationFailedException",
    "errorCode": 0,
    "eventId": 3000
}
Run Code Online (Sandbox Code Playgroud)

文档对如何发送此数据非常不清楚:https : //docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-6.1#属性集合

非常感谢您的帮助。

LJ.*_*LJ. 6

我相信您不能通过 Queue API 传递运行时参数。相反,使用Runs API

这样,您的请求正文 (use Content-type: application/json) 应该类似于以下内容:

{
    "resources": {
        "repositories": {
            "self": {
                "refName": "refs/heads/feature/my-pipeline"
            }
        }
    },
    "templateParameters": {
        "appId": "bab"
        "platform": "android"
        "isDemo": true
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 关于差异(构建与运行)。构建 API 允许您更具体地访问每个构建并以这种方式定义它,而运行(包含在 Pipelines API 中)通常意味着在本例中为管道本身“更高”一级的操作。这只是我从与他们两人合作的一些经验中得出的观点。 (2认同)