1
votes

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. enter image description here

Thanks in advance.

1
You can definition sourceDefinitions to call service (e.g. REST API) to get necessary data and bind data to corresponding picklist in dataSourceBindings. But don't find the way to get current team project URL? Could you let user to specify team project URL?starian chen-MSFT
@starain-MSFT: I can't let the user to enter the project name, Also cant specify a separate endpoint with VSTS credentials to get this data. (As in example link you sent) Thank you.Bandara

1 Answers

3
votes

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: enter image description here

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.