How to display “Area path” in VSTS build task inpu

2019-01-12 04:52发布

问题:

I need to display the the "Area path" in a VSTS Build task input PickList, so that I can retrieve the user selected "Area path" value from my build task and set it in a work item generated by the build task. Is this possible with existing VSTS API? If so how to do this?

I think this is done in Copy Files task in Utilty section.

Thanks in advance.

回答1:

Yes, it is. You can add following section in task.josn file to achieve this:

  "inputs": [
    {
      "name": "rootArea",
      "type": "pickList",
      "label": "rootArea",
      "defaultValue": "",
      "required": false,
      "helpMarkDown": "Select the root area.",
      "properties": {
                "DisableManageLink": "True"
            }   
    },
    {
      "name": "childArea",
      "type": "pickList",
      "label": "childArea",
      "defaultValue": "",
      "required": false,
      "helpMarkDown": "Select the child area.",
      "properties": {
                "DisableManageLink": "True"
            }   
    }
  ],
  "sourceDefinitions": [
        {
            "target": "rootArea",
            "endpoint": "/$(system.teamProject)/_apis/wit/classificationNodes/areas?$depth=2&api-version=1.0",
            "selector": "jsonpath:$.name",
            "keySelector": "jsonpath:$.name",
                "authKey": "tfs:teamfoundation"
        },
        {
            "target": "childArea",
            "endpoint": "/$(system.teamProject)/_apis/wit/classificationNodes/areas?$depth=2&api-version=1.0",
            "selector": "jsonpath:$.children[*].name",
            "keySelector": "jsonpath:$.children[*].name",
                "authKey": "tfs:teamfoundation"
        }
    ],

And you will get the build task like this:

However, due to data structure in the response of classification nodes api, you have to add more inputs when there are more level of child areas.