Azure devops 是不是;“创建故障时的工作项”;Azure DevOps YAML管道是否存在选项?
在Azure Devops“Classic”管道中,管道选项菜单中有一个部分,您可以在其中打开一个功能,在管道故障时自动创建工作项。但是,在新的YAML管道中,“选项”菜单中没有此功能。此选项在某种程度上仍然可用,还是YAML管道不支持此选项?尽管此选项目前无法通过YAML管道的GUI使用,但它仍然可以正常工作-只是没有一种简单的方法可以打开它。但是,您可以通过利用Azure DevOps REST API来实现这一点 首先,您需要知道Azure DevOps组织、项目的名称以及管道的定义ID,这是查看给定管道时URL上的查询字符串参数,例如Azure devops 是不是;“创建故障时的工作项”;Azure DevOps YAML管道是否存在选项?,azure-devops,azure-yaml-pipelines,Azure Devops,Azure Yaml Pipelines,在Azure Devops“Classic”管道中,管道选项菜单中有一个部分,您可以在其中打开一个功能,在管道故障时自动创建工作项。但是,在新的YAML管道中,“选项”菜单中没有此功能。此选项在某种程度上仍然可用,还是YAML管道不支持此选项?尽管此选项目前无法通过YAML管道的GUI使用,但它仍然可以正常工作-只是没有一种简单的方法可以打开它。但是,您可以通过利用Azure DevOps REST API来实现这一点 首先,您需要知道Azure DevOps组织、项目的名称以及管道的定义ID,
https://dev.azure.com/{organization}/{project}/_build?definitionId={definitionId}
。然后,您需要使用以下URL格式向管道API发送该ID的GET请求:https://dev.azure.com/{organization}/{project}/_api/build/definitions/{definition id}?api版本=5.1
。对于身份验证,您应该能够使用基本身份验证,将用户名留空,并使用范围适当的个人访问令牌作为密码
如果您的请求成功,您应该会得到一个包含一个大型JSON对象的响应,该对象描述了正在讨论的管道。有很多是不相关的,但我们正在寻找的是接近顶部的:有一个options
数组,其中包括以下元素:
...
{
"enabled": false,
"definition": {
"id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
},
"inputs": {
"workItemType": "Task",
"assignToRequestor": "true",
"additionalFields": "{}"
}
},
...
“a9db38f9-9fdc-478c-b0f9-464221e58316”
的ID在所有管道中都是静态的,它唯一地标识了故障时创建工作项的选项。如果我们编辑JSON以将“enabled”:false“
更改为true
(并在输入
字段中设置任何其他所需选项),我们现在可以从GET请求中获取整个JSON响应,并将其用作对同一URL的第二个API调用的主体,这次是一个PUT
请求。如果所有操作都正确,您应该可以在PUT
的响应中看到更新的更改
这有点笨重,因为仍然无法验证该选项是否通过web UI打开,但在Microsoft更新UI以包含此功能之前,它是可用的最佳选项。另一个方便的提示是,如果您已经有一个经典模式管道,在其中向UI添加了其他字段或其他自定义项,则可以在该管道上执行API
GET
,以提取这些设置的确切JSON,并使用它们通知您的PUT
到YAML管道。在我的情况下,GET请求成功,但我没有返回选项
数组。这很奇怪!我一直在使用此技巧更新在我的auto gene上填充的字段我们的帐户是在Azure DevOps被这样调用之前创建的,这意味着我们的URL仍然是{org}.visualstudio.com。这可能是原因吗?我不这么认为-我的组织实际上也是这样。我不知道为什么你的回复机构看起来会和我的不同。也就是说,即使你的组织使用{org}.visualstudio.com URL格式,您也可以使用新的格式-也许可以尝试将您的值替换为我文章中的确切URL格式?您是否可能使用与我调用中指定的5.1版本不同的api版本进行调用?