Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 是不是;“创建故障时的工作项”;Azure DevOps YAML管道是否存在选项?_Azure Devops_Azure Yaml Pipelines - Fatal编程技术网

Azure devops 是不是;“创建故障时的工作项”;Azure DevOps YAML管道是否存在选项?

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,

在Azure Devops“Classic”管道中,管道选项菜单中有一个部分,您可以在其中打开一个功能,在管道故障时自动创建工作项。但是,在新的YAML管道中,“选项”菜单中没有此功能。此选项在某种程度上仍然可用,还是YAML管道不支持此选项?

尽管此选项目前无法通过YAML管道的GUI使用,但它仍然可以正常工作-只是没有一种简单的方法可以打开它。但是,您可以通过利用Azure DevOps REST API来实现这一点

首先,您需要知道Azure DevOps组织、项目的名称以及管道的定义ID,这是查看给定管道时URL上的查询字符串参数,例如
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版本进行调用?