azure-devopstfs-2015

How do you make a custom task to TFS 2015 on premises avaliable


I have followed multiple guides and created a VSIX for my build steps. I had an admin upload them and install them to my team project collection. The problem is when I look at the build they aren't available to pull in as tasks. What do I need to do to make them show up?

I have attached the screen shot below of it uploaded. And also a redacted copy of my json config files. I have no idea what is wrong. I also tried using the tfx tool to upload it but it is asking for a personal access token.

I don't believe it is available in 2015. I tried using the workaround but fiddler was giving me a bad header error. If anyone can point out my error it would be greatly appreciated.

TFS Gallery

vss-extension.json

   {
      "manifestVersion": 1,
      "id": "Archive-Source-Task",
      "name": "Archive Source",
      "public": false,
      "version": "1.0.1",
      "publisher": "redacted",
      "description": "Copy the source",
      "targets": [
        {
          "id": "Microsoft.VisualStudio.Services"
        }
      ],
      "categories": [
        "Build and release"
      ],
      "files": [
        {
          "path": "Task"
        },
        {
          "path": "bin"
        }
      ],
      "contributions": [
        {
          "id": "Archive Source",
          "type": "ms.vss-distributed-task.task",
          "targets": [
            "ms.vss-distributed-task.tasks"
          ],
          "properties": {
            "name": "task"
          }
        }
      ],
      "tags": [
        "Build",
        "Release",
        "Management",
        "Utility",
        "Tasks"
      ]
    }

task.json

    {
  "id": "27203bc5-f3f1-4f80-b2ea-8f62dd4790f1",
  "name": "Archive Source",
  "description": "Copies your source",
  "helpMarkDown": "",
  "category": "Utility",
  "author": "",
  "version": {
    "Major": 1,
    "Minor": 0,
    "Patch": 0
  },
  "groups": [
    {
      "name": "advanced",
      "displayName": "Advanced",
      "isExpanded": false
    }
  ],
  "instanceNameFormat": "Archive Source",
  "visibility": [
    "Build"
  ],
  "execution": {
    "PowerShell": {
      "target": "$(currentDirectory)\\ArchiveSource.ps1",
      "argumentFormat": "",
      "workingDirectory": "$(currentDirectory)"
    }
  }
}

Solution

  • According to the files section in your vss-extension.json file:

      "files": [
        {
          "path": "Task"
        },
        {
          "path": "bin"
        }
      ],
    

    I suspect that the folder you use to place the task files is named as "Task" instead of "task", so in the contribution section, you should also use "Task" in properties:

      "contributions": [
        {
          "id": "Archive Source",
          "type": "ms.vss-distributed-task.task",
          "targets": [
            "ms.vss-distributed-task.tasks"
          ],
          "properties": {
            "name": "Task"
          }
        }
      ],