API REST do Azure para executar compilações ou pipelines

Aug 30 2020

Estou tentando automatizar a criação de Azure Pipelines para um determinado branch usando sua API REST.

No entanto, estou lutando para usar quase todas as APIs, pois a documentação carece de exemplos.

Coisas como List e Get são bastante simples.

No entanto, quando se trata de enfileirar uma construção: 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"
}

Atualmente, estou lutando para enviar parâmetros. Eu tentei:

JSON simples como:

"parameters": {
    "appId": "bab",
    "platform": "android",
    "isDemo": true
}

e stringify a versão do JSON como:

"parameters": "{\"appId\": \"bab\",\"platform\": \"android\",\"isDemo\": true}"

mas nenhum parece funcionar.

Ele continua me dando o erro:

{
    "$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
}

Os documentos não são muito claros sobre como enviar esses dados: https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-6.1#propertiescollection

Muito obrigado pela sua ajuda.

Respostas

4 LJ. Aug 30 2020 at 11:06

Eu acredito que você não pode passar parâmetros de tempo de execução através da API Queue. Em vez disso, use a API Runs

Com isso, seu corpo de solicitação (usar Content-type: application/json) deve ser semelhante a este:

{
    "resources": {
        "repositories": {
            "self": {
                "refName": "refs/heads/feature/my-pipeline"
            }
        }
    },
    "templateParameters": {
        "appId": "bab"
        "platform": "android"
        "isDemo": true
    }
}