开发Azure DevOps扩展时无法使用resultSelector

时间:2018-11-19 16:57:52

标签: azure-devops mustache azure-pipelines-release-pipeline azure-pipelines-release-task

我正在针对Azure Devops的自定义扩展进行开发,该扩展已经包含服务终结点:

instanceof

此外,我想创建一个定制的Release Artifact来源:

"type": "ms.vss-endpoint.service-endpoint-type"

this documentation之后,我目前的工作是使用外部API填充Artifact Source下的字段。我在下面的“ resultSelector”和“ resultTemplate”中尝试了多种模式,但找不到适合我的模式。

在我的示例中,我想将所有uri值都放在json响应的“ builds”下,并将其显示在Artifact Source的“ definition” inputDescriptor中。我的所有尝试都导致一个空的组合框,即使我可以看到请求已到达所需的API。

我想解析到组合框中的json:

“type”: “ms.vss-releaseartifact.release-artifact-type”

能帮我创建“ Mustache”模式来检索上述“ uri”值吗?
我尝试过:

{
"builds": [
    {
        "uri": "/build1",
        "lastStarted": "2018-11-07T13:12:42.547+0000"
    },
    {
        "uri": "/build2",
        "lastStarted": "2018-11-09T15:40:30.315+0000"
    },
    {
        "uri": "/build3",
        "lastStarted": "2018-11-12T17:46:24.805+0000"
    }
],
"uri": "https://<server-address>/api/build"
}

似乎无效。

如果有帮助,这里有更多信息。

服务端点的数据源:

$.builds[*].uri

工件来源:

"dataSources": [
                {
                  "name": "TestConnection",
                  "endpointUrl": "{{endpoint.url}}/api/plugins",
                  "resourceUrl": "",
                  "resultSelector": "jsonpath:$.values[*]",
                  "headers": [],
                  "authenticationScheme": null
                },
                {
                  "name": "BuildNames",
                  "endpointUrl": "{{endpoint.url}}/api/build",
                  "resultSelector": "jsonpath:$.builds[*].uri"
                },
                {
                  "name": "BuildNumbers",
                  "endpointUrl": "{{endpoint.url}}/api/builds/{{definition}}",
                  "resultSelector": "jsonpath:$.buildsNumbers[*].uri"
                }
]

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

此案例的有效组合是:

数据源:

{
  "name": "BuildNames",
  "endpointUrl": "{{endpoint.url}}/api/build",
  "resultSelector": "jsonpath:$.builds[*]"
}

dataSourceBindings:

{
  "target": "definition",
  "dataSourceName": "BuildNames",
  "resultTemplate": "{ \"Value\" : \"{{{uri}}}\", \"DisplayValue\" : \"{{{uri}}}\" }"
}