动态填充 Azure 自定义任务选择列表的选项

问题描述 投票:0回答:1

我得到了一个用 Typescript 编写的 Azure 自定义任务。该任务在其 task.json 中定义了一个选择列表。

我希望能够根据另一个选项列表中选取的值填充选项列表。

有没有办法做这样的伪代码:

const options1 = { option1: value1, option2: value2, option3: value3 }
const options2 = { option1: othervalue1, option2: othervalue2, option3: othervalue3 }

let mainChoice = tl.getInput("firstpicklist", true);
let picklistObj = tl.getObject("secondPickList");
if(mainChoice==="1")
{
   picklistObj.options = options1;
}
else
{
   picklistObj.options = options1;
}

如果没有选项来填充直接对象,是否可以以某种方式从 Azure var 组中获取值?

azure azure-devops azure-pipelines-build-task
1个回答
0
投票

这不是一个完整的答案,更多部分可能会帮助您找到正确的方向。另外,我认为下拉菜单没有刷新触发器。

你知道

dataSourceBindings
吗? 这是一个有点隐藏的功能。找不到这个详细记录。 它应该是同一级别的 task.json 文件的一部分,如
id
inputs
:

 "dataSourceBindings": [
    {
      "target": "versionSpec",
      "endpointId": "tfs:teamfoundation",
      "endpointUrl": "{{endpoint.url}}/_apis/settings/entries/host/my-extensions-json-doc?api-version=7.1-preview",
      "resultSelector": "jsonpath:$.value['Current'].versions[?(@.state > 0 && @.state < 6)]",
      "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{name}}}\" }"
    }
  ],

您会看到

target
属性指向
versionSpec
,这是选项列表的名称,如下所示:

"inputs": [
    {
      "name": "versionSpec",
      "type": "pickList",
      "label": "Some version",
      "defaultValue": "default", <!-- set to the 'default' option in the options jsonstring below
      "options": { "default": "Default (see version with * prefixed)" },
      "properties": {
        "EditableOptions": "False", <-- might be true for you
        "PopulateDefaultValue": "True", <-- not sure what effect this has
        "DisableManageLink": "True" <-- in task editor show some link
      }
    }
  ],

从绑定中选择数据源值之一后,yaml 编辑器可能会抱怨动态加载的值。不知道如何解决这个问题,猜想这是不可能的。

创建第二个输入和第二个数据源绑定,您可以在输入 1 和 2 之间交替以及可见性。但这仅在 yaml 的任务编辑器或经典定义中是动态的。 在两个输入上设置visibilityRule,如here所示。

顺便说一句。 EndpointId 也由 ADO 本身使用。使用 ADO 项目的当前上下文等。不确定这是否是好的做法,但对我来说它有效。 我想可以在这里提供您自己的 API,但我自己没有尝试过。我此时经常遇到的一个问题是这个

© www.soinside.com 2019 - 2024. All rights reserved.