【问题标题】:Send array of object inside custom Azure DevOps tasks / extensions在自定义 Azure DevOps 任务/扩展中发送对象数组
【发布时间】:2020-07-14 13:05:26
【问题描述】:

我想为 Azure DevOps 创建一个自定义任务,我希望有一个对象数组作为参数并在 yaml 中像这样使用它:

data:
  - field1: "data1"
    field2: "data2"
  - field1: "data3"
    field2: "data4"

但是我没有找到任何适用于这种情况的方法或示例,只有像 string 数组这样的简单数组。如何将 yaml 中的对象列表传递给我的自定义 Azure DevOps 任务?如果需要,请随时向我询问更多详细信息。

编辑:

例如,我想发送一个复杂的 lisf 对象:

data:  # Data should be an array
  - object:
    file1: "/myDestinationPath"
    file2: "/TheFilePathToSend"
    override: true
  - object:
    file1: "/myDestinationPath2"
    file2: "/TheFilePathToSend2"
    override: false
...

然后我希望加载它,例如:

let dataArray = task.getPathInput('data', true);

哪里dataArray可以做一个简单的JSON数组,以后管理起来就方便了。

【问题讨论】:

  • 您能否更新一个您希望将其存储在参数中的简单示例数据,以及如何将此数组映射到任务参数?
  • @MerlinLiang-MSFT 我添加了更新:)

标签: azure-devops yaml azure-devops-extensions


【解决方案1】:

Fandro,一个建议可能是改变您组织参数和使用taskgetDelimitedInput 函数的方式。

假设您正在使用Azure pipeline task lib in TypeScript 并且熟悉Build task creation

第 1 步)在 task.json 文件中使用分隔符(例如 | )定义变量。

    dataOrigin: "/myDestinationPath|/myDestinationPath2"
    dataDestination: "/TheFilePathToSend|/TheFilePathToSend2"
    dataOverwriteCriteria: "true|false"

第 2 步)编辑您的任务文件(例如 index.ts )您可以使用 taskgetDelimitedInput,它返回字符串数组。

第 3 步)操纵你的价值观:

let dataOriginArray = task.taskgetDelimitedInput('dataOrigin', "|");
let dataDestinationArray = task.taskgetDelimitedInput('dataDestination', "|");
let dataOverwriteCriteriaArray = task.taskgetDelimitedInput('dataOverwriteCriteria', "|");

【讨论】:

  • 感谢您的回答,它可以是一个解决方案,我还想象一个字符串数组列表直接作为参数。我很惊讶没有其他可用的选项
  • 我同意你可以直接使用字符串数组,无论如何这是当前版本的 API 和 JSON 定义的可用答案。如果您认为这是一个很大的改进,您可以在 github 上创建一个拉取请求,甚至是一个功能请求!干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多