{
   "name": "{{BuildDefName}}",
   "type": "build",
   "quality": "definition",
   "queue": {
      "id": "{{QueueId}}"
   },
   "build": [
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Run bower",
         "timeoutInMinutes": 0,
         "task": {
            "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "filename": "bower",
            "arguments": "install",
            "workingFolder": "",
            "failOnStandardError": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Run dotnet restore",
         "timeoutInMinutes": 0,
         "task": {
            "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "filename": "dotnet",
            "arguments": "restore --no-cache",
            "workingFolder": "",
            "failOnStandardError": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Run Tests",
         "timeoutInMinutes": 0,
         "task": {
            "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "filename": "%userprofile%\\.nuget\\packages\\OpenCover\\4.6.519\\tools\\OpenCover.Console.exe",
            "arguments": "-target:dotnet.exe -targetargs:\"test -c $(BuildConfiguration) -o $(Build.StagingDirectory)/reports -xml test-results.xml\" -output:OpenCover.xml -returntargetcode -hideskipped:All -filter:+[{{Project}}]* -register:user -oldStyle",
            "workingFolder": "test/{{Project}}.Tests",
            "failOnStandardError": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Convert coverage results",
         "timeoutInMinutes": 0,
         "task": {
            "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "filename": "%userprofile%\\.nuget\\packages\\OpenCoverToCoberturaConverter\\0.2.4\\tools\\OpenCoverToCoberturaConverter.exe",
            "arguments": "\"-input:OpenCover.xml\" \"-output:Cobertura.xml\"",
            "workingFolder": "test/{{Project}}.Tests",
            "failOnStandardError": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Generate Test Reports",
         "timeoutInMinutes": 0,
         "task": {
            "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "filename": "%userprofile%\\.nuget\\packages\\ReportGenerator\\2.4.5\\tools\\ReportGenerator.exe",
            "arguments": "-reports:OpenCover.xml -targetdir:.\\reports -reporttypes:Html;Xml;XmlSummary",
            "workingFolder": "test/{{Project}}.Tests",
            "failOnStandardError": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Publish Test Results",
         "timeoutInMinutes": 0,
         "task": {
            "id": "0b0f01ed-7dde-43ff-9cbb-e48954daf9b1",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "testRunner": "XUnit",
            "testResultsFiles": "**/TEST-*.xml",
            "mergeTestResults": "false",
            "testRunTitle": "",
            "platform": "",
            "configuration": "",
            "publishRunAttachments": "true"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Publish Code Coverage Results",
         "timeoutInMinutes": 0,
         "task": {
            "id": "2a7ebc54-c13e-490e-81a5-d7561ab7cd97",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "codeCoverageTool": "Cobertura",
            "summaryFileLocation": "$(Build.SourcesDirectory)/test/{{Project}}.Tests/Cobertura.xml",
            "reportDirectory": "$(Build.SourcesDirectory)/test/{{Project}}.Tests/reports",
            "additionalCodeCoverageFiles": ""
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Run dotnet publish",
         "timeoutInMinutes": 0,
         "task": {
            "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "filename": "dotnet",
            "arguments": "publish -c $(BuildConfiguration) -o $(Build.StagingDirectory)/pub",
            "workingFolder": "src/{{Project}}",
            "failOnStandardError": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Copy Dockerfile",
         "timeoutInMinutes": 0,
         "task": {
            "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "SourceFolder": "src/{{Project}}",
            "Contents": "Dockerfile",
            "TargetFolder": "$(Build.StagingDirectory)/pub",
            "CleanTargetFolder": "false",
            "OverWrite": "false"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Build an image",
         "timeoutInMinutes": 0,
         "task": {
            "id": "b93c4522-5bea-4118-97ae-2b560628a157",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "dockerHostEndpoint": "{{dockerHostEndpoint}}",
            "dockerRegistryEndpoint": "{{dockerRegistryEndpoint}}",
            "action": "Build an image",
            "dockerFile": "$(Build.StagingDirectory)/pub/dockerfile",
            "imageName": "{{dockerRegistryId}}/{{ProjectLowerCase}}:$(Build.BuildId)",
            "context": "$(Build.StagingDirectory)/pub",
            "containerName": "",
            "ports": "",
            "envVars": "",
            "removeImageAfterPush": "false",
            "customCommand": "",
            "containerCommand": "",
            "cwd": "$(Build.StagingDirectory)/pub"
         }
      },
      {
         "enabled": true,
         "continueOnError": false,
         "alwaysRun": false,
         "displayName": "Push an image",
         "timeoutInMinutes": 0,
         "task": {
            "id": "b93c4522-5bea-4118-97ae-2b560628a157",
            "versionSpec": "*",
            "definitionType": "task"
         },
         "inputs": {
            "dockerHostEndpoint": "{{dockerHostEndpoint}}",
            "dockerRegistryEndpoint": "{{dockerRegistryEndpoint}}",
            "action": "Push an image",
            "dockerFile": "**/Dockerfile",
            "imageName": "{{dockerRegistryId}}/{{ProjectLowerCase}}:$(Build.BuildId)",
            "context": "$(Build.StagingDirectory)",
            "containerName": "",
            "ports": "",
            "envVars": "",
            "removeImageAfterPush": "false",
            "customCommand": "",
            "containerCommand": "",
            "cwd": "$(System.DefaultWorkingDirectory)"
         }
      }
   ],
   "triggers": [
      {
         "branchFilters": [
            "+refs/heads/master"
         ],
         "pathFilters": [],
         "batchChanges": false,
         "maxConcurrentBuildsPerBranch": 1,
         "triggerType": "continuousIntegration"
      }
   ],
   "variables": {
      "system.debug": {
         "value": "false",
         "allowOverride": true
      },
      "BuildConfiguration": {
         "value": "release",
         "allowOverride": true
      },
      "BuildPlatform": {
         "value": "any cpu",
         "allowOverride": true
      },
      "DOTNET_SKIP_FIRST_TIME_EXPERIENCE": {
         "value": "true",
         "allowOverride": false
      },
      "NUGET_XMLDOC_MODE": {
         "value": "skip",
         "allowOverride": false
      }
   },
   "repository": {
      "properties": {
         "labelSources": "0",
         "reportBuildStatus": "true"
      },
      "type": "TfsGit",
      "name": "{{Project}}",
      "url": "https://{{VSTS}}.visualstudio.com/_git/{{Project}}",
      "defaultBranch": "refs/heads/master",
      "clean": "false",
      "checkoutSubmodules": false
   }
}