【问题标题】:Does the "Create Work Item on Failure" option exist for Azure DevOps YAML Pipelines?Azure DevOps YAML Pipelines 是否存在“失败时创建工作项”选项?
【发布时间】:2020-07-06 14:05:08
【问题描述】:

在 Azure Devops“经典”管道中,管道选项菜单中有一个部分,您可以在其中打开一项功能,以便在管道失败时自动创建工作项。但是,在新的 YAML 管道中,选项菜单中不存在此功能。此选项是否仍以某种方式可用,还是 YAML 管道不支持?

【问题讨论】:

    标签: azure-devops azure-yaml-pipelines


    【解决方案1】:

    虽然此选项目前无法通过 GUI 用于 YAML 管道,但它仍然可以在后台运行 - 只是没有一种简单的方法可以打开它。但是,您可以通过使用 Azure DevOps REST API 来做到这一点。

    首先,您需要知道 Azure DevOps 组织、项目的名称和管道的定义 ID,这是查看给定管道时 URL 上的查询字符串参数,例如https://dev.azure.com/{organization}/{project}/_build?definitionId={definition id}。然后,您需要使用以下 URL 格式向 Pipelines API 发送该 ID 的 GET 请求: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 字段中设置任何其他所需的选项),我们现在可以从 GET 请求中获取整个 JSON 响应,并将其用作主体对同一 URL 的第二次 API 调用,这次是 PUT 请求。如果一切正确,您应该会在来自PUT 的响应中看到更新后的更改。

    这有点笨拙,因为仍然无法通过 Web UI 验证该选项是否已打开,但在 Microsoft 更新 UI 以包含此功能之前,它是可用的最佳选项。一个更方便的提示是,如果您已经有一个经典模式管道,您在其中向 UI 添加了附加字段或其他自定义项,您可以在该管道上执行 API GET 以提取这些设置的确切 JSON 并使用它们通知您的 PUT 到您的 YAML 管道。

    【讨论】:

    • 在我的例子中,GET 请求是成功的,但是我没有返回 options 数组。
    • 这很奇怪!就在昨天,我一直在使用这个技巧来更新自动生成的工作项上填充的字段。
    • 我们的帐户是在调用 Azure DevOps 之前创建的,这意味着我们的 URL 仍然是 {org}.visualstudio.com。会不会是这个原因?
    • 我不这么认为——我的组织也是如此。我不知道为什么您的响应正文看起来与我的不同。
    • 也就是说,即使您的组织使用 {org}.visualstudio.com URL 格式,您仍然可以使用新的 - 也许尝试将您的值替换为我帖子中的确切 URL 格式?您是否可能使用与我通话中指定的 5.1 不同的 api-version 通话?
    猜你喜欢
    • 2020-12-12
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2020-06-11
    • 2019-12-27
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多