在Azure Devops“经典”管道中,管道的“选项”菜单中有一个部分,您可以在其中打开功能以自动创建有关管道故障的工作项。但是,在新的YAML管道中,选项菜单中没有此功能。该选项是否仍然可用,或者YAML管道不支持该选项?
答案 0 :(得分:1)
尽管该选项当前无法通过YAML管道的GUI使用,但它仍然可以在后台运行-仅有一种简单的方法可以将其打开。但是,您可以通过利用Azure DevOps REST API来做到这一点。
首先,您需要知道Azure DevOps组织,项目的名称以及管道的“定义ID”,这是在查看给定管道时URL上的查询字符串参数,例如https://dev.azure.com/{organization}/{project}/_build?definitionId={definition id}
。然后,您将使用以下{URL:https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definition id}?api-version=5.1
这样的URL格式向该ID的Pipelines API发送GET请求。对于身份验证,您应该能够使用基本身份验证,将用户名保留为空白,并使用适当范围的个人访问令牌作为密码。
如果请求成功,您应该得到一个包含一个大JSON对象的响应,该对象描述了所讨论的管道。那里有很多不相关的东西,但我们要寻找的是顶部附近:有一个options
数组,其中包含以下元素:
...
{
"enabled": false,
"definition": {
"id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
},
"inputs": {
"workItemType": "Task",
"assignToRequestor": "true",
"additionalFields": "{}"
}
},
...
该ID "a9db38f9-9fdc-478c-b0f9-464221e58316"
在所有管道中似乎都是静态的,并且唯一地标识了在失败时创建工作项的选项。如果我们编辑JSON将"enabled": false"
更改为true
(并在inputs
字段中设置其他所需的选项),那么我们现在可以从GET请求中获取整个JSON响应,并将其用作对同一URL的第二次API调用的主体,这次是PATCH请求。如果一切正确,则应该在PATCH的响应中看到更新的更改。
这有点笨拙,因为仍然无法验证是否通过Web UI启用了该选项,但是直到Microsoft更新UI使其包含此功能之前,它才是最好的选择。还有一个方便的技巧是,如果您已经有一个经典模式管道,在其中向UI添加了其他字段或其他自定义项,则可以对该管道执行API GET
,以提取这些设置的确切JSON,并使用它们将您的PATCH告知您的YAML管道。