如何将复选框输入添加到 Azure DevOps 任务组?

How do you add a checkbox input to an Azure DevOps Task Group?

在 Azure DevOps 中,我创建了一个任务组,运行s Postman 使用 newman CLI 进行测试。作为输入,用户可以传入 Postman 集合和环境文件的路径。

由于 newman CLI 是必需的,因此任务组中的第一个任务是安装它。但是,在几个集合是 运行 的场景下,没有必要一遍又一遍地安装 CLI,所以我想提供一个复选框,然后根据值有条件地 运行 安装任务该复选框的。

由于任务组的 UI 非常缺乏有用的选项,我开始探索 API。我可以添加额外的输入,但是将明显的 type 选项设置为 checkbox 只会产生额外的文本 (string) 输入。

POST https://dev.azure.com/{org}/{project}/_apis/distributedtask/taskgroups?api-version=5.1-preview.1

{
    ...
    "inputs": [
        {
            "aliases": [],
            "options": {},
            "properties": {},
            "name": "Rbt.Cli.Install",
            "label": "Install 'newman' CLI?",
            "defaultValue": true,
            "required": false,
            "type": "checkbox",
            "helpMarkDown": "Choose whether or not to install the 'newman' CLI. You only need to install it if it hasn't already been installed by a previos task running on this job.",
            "groupName": ""
        },
        ...
    ],
    ...
}

仔细查看文档,有一个输入定义 - TaskInputDefinition。但是,看起来好像负责编写 that documentation 的人有一天早早离开了,而且从来没有抽出时间来写。根本没有描述,因此不可能知道定义中属性的有效值。

如何向我的任务组添加复选框?

我现在发现任务组提供 picklist 作为输入类型。这允许向用户提供 yes/no 选项,并且根据他们的回答,我能够有条件地 运行 一项任务。

不过,我还是希望有一个复选框,如果有人知道该怎么做的话。

{
    "aliases": [],
    "options": {
        "yes": "Yes - install CLI",
        "no": "No - the CLI has already been installed"
    },
    "properties": {},
    "name": "Postman.Cli.Install",
    "label": "Install 'newman' CLI?",
    "defaultValue": "yes",
    "required": true,
    "type": "picklist",
    "helpMarkDown": "Choose whether or not to install the 'newman' CLI. You only need to install it if it hasn't already been installed by a previos task running on this job.",
    "groupName": ""
}

您可以通过将类型设置为 boolean

轻松地将复选框添加到管道任务
 {
    "name": "Rbt.Cli.Install",
    "type": "boolean",
    "label": "Install 'newman' CLI?"  
 }

并根据复选框状态控制其他控件的可见性如下:

{
    "name": "someOtherField",
    "type": "string",
    "label": "Some other field",
    "visibleRule": "Rbt.Cli.Install = true"
},