Azure DevOps YAML 管道是否存在 "Create Work Item on Failure" 选项?
Does the "Create Work Item on Failure" option exist for Azure DevOps YAML Pipelines?
在 Azure Devops“经典”管道中,管道选项菜单中有一个部分,您可以在其中打开一项功能以在管道失败时自动创建工作项。但是,在新的 YAML 管道中,选项菜单中不存在此功能。此选项是否仍以某种方式可用,或者 YAML 管道不支持它?
虽然此选项目前无法通过 GUI 用于 YAML 管道,但它仍然可以在后台运行 - 只是没有一种简单的方法可以打开它。但是,您可以利用 Azure DevOps REST API.
首先,您需要知道 Azure DevOps 组织、项目的名称,以及管道的定义 ID,当您查看给定管道时,它是 URL 上的查询字符串参数,例如https://dev.azure.com/{organization}/{project}/_build?definitionId={definition id}
。然后,您需要使用此 URL 格式向管道 API 发送 GET 请求以获取该 ID:https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definition id}?api-version=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
(并在 inputs
字段中设置任何其他所需的选项),我们现在可以获取整个 JSON 我们的 GET 请求的响应,并将其用作对同一个 URL 的第二个 API 调用的正文,这次是 PUT
请求。如果一切正确,您应该会看到更新后的更改反映在 PUT
.
的响应中
它有点笨拙,因为仍然无法通过网络验证该选项是否已打开 UI,但在 Microsoft 更新 UI 以包含此功能之前,它是最佳选择可用的。另一个方便的提示是,如果您已经有一个经典模式管道,您在其中添加了附加字段或其他自定义项到 UI,您可以在该管道上执行 API GET
为这些设置提取确切的 JSON,并使用它们将 PUT
通知给 YAML 管道。
在 Azure Devops“经典”管道中,管道选项菜单中有一个部分,您可以在其中打开一项功能以在管道失败时自动创建工作项。但是,在新的 YAML 管道中,选项菜单中不存在此功能。此选项是否仍以某种方式可用,或者 YAML 管道不支持它?
虽然此选项目前无法通过 GUI 用于 YAML 管道,但它仍然可以在后台运行 - 只是没有一种简单的方法可以打开它。但是,您可以利用 Azure DevOps REST API.
首先,您需要知道 Azure DevOps 组织、项目的名称,以及管道的定义 ID,当您查看给定管道时,它是 URL 上的查询字符串参数,例如https://dev.azure.com/{organization}/{project}/_build?definitionId={definition id}
。然后,您需要使用此 URL 格式向管道 API 发送 GET 请求以获取该 ID:https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definition id}?api-version=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
(并在 inputs
字段中设置任何其他所需的选项),我们现在可以获取整个 JSON 我们的 GET 请求的响应,并将其用作对同一个 URL 的第二个 API 调用的正文,这次是 PUT
请求。如果一切正确,您应该会看到更新后的更改反映在 PUT
.
它有点笨拙,因为仍然无法通过网络验证该选项是否已打开 UI,但在 Microsoft 更新 UI 以包含此功能之前,它是最佳选择可用的。另一个方便的提示是,如果您已经有一个经典模式管道,您在其中添加了附加字段或其他自定义项到 UI,您可以在该管道上执行 API GET
为这些设置提取确切的 JSON,并使用它们将 PUT
通知给 YAML 管道。