首页 > 解决方案 > 用户 PowerShell 在 Azure Devops 中对生成进行排队

问题描述

堆栈中有一些相关的问题,我将它们放在下面。我正在使用 Azure DevOps api 5.1 并尝试将构建排队。

{
    "Definition": {
        "id": "7"
    }
}

这将使用已在定义中设置的变量对构建进行排队。我试图以几种不同的方式传递变量,这两种方式最终都没有被 API 认可。

{
    "Definition": {
        "id": "7",
        "variables": {
            "tag": "@{value=v1.1.0}",
            "system.debug": "@{value=true}"
        }
    }
}

根据我也尝试过的一些相关问题

{
    "Definition": {
        "id": "7",
        "parameters": {
            "tag": "@{value=v1.1.0}",
            "system.debug": "@{value=true}"
        }
    }
}

在通过 UI 对构建进行排队时捕获 chrome 的输出后,它似乎期望变量而不是参数,但是当我返回查看构建时我看到的是传入的变量没有得到尊重。此外,我已经采用了我希望运行的定义并将其隐藏到上面的 body.definition 中。

VSTS 使用 API 在排队时设置构建参数

TFS 2017 API;使用变量排队构建

如何使用 VSTS REST API 对新构建进行排队

请让我知道我是否应该添加更多细节我没有放实际代码,但这很简单

Invoke-RestMethod -Method post -Uri $uri -Headers $Header -ContentType 'application/json' -Body ($Body |ConvertTo-Json -Compress -Depth 10)

标签: powershellazure-devops

解决方案


在启动邮递员并找到一个集合之后,我尝试传递变量的方式似乎存在两个问题。

问题 1:变量与参数

即使基于这里的几个问题以及捕获从 Web 浏览器到 devops 的流量。您不能将变量用作定义的一部分,它必须是参数。此外,它们似乎不能嵌套在定义(body.definition.parameters)中,它们必须与定义(body.parameters)处于同一级别。

问题2:格式

参数值必须是压缩的json,另外不能是对象,必须是variable:value。

{
    "definition": {
        "id": 7
    },
    "parameters": "{\"tag\":\"v3.2.1\"},\"system.debug\":\"true\"}"
}

我觉得我之前可能在我上面发布的相关问题之一中看到过这个答案。为所有重复的努力道歉。


推荐阅读