2016-05-20 9 views
1

C#で書かれたコンソールアプリケーションでTFSの既存のビルド定義を更新しようとしているときに問題が発生しました。私は正常にビルドをキューに入れていますが、私が見ることができるように、パラメータで渡す引数はビルドには適用されません。私はトリガーする前に定義を更新しようとしましたが、悪い要求も受け取ります。より良い方法がありました。私が必要とするのは、いくつかのパラメータを渡すことだけです。私は弦を渡すことも好まない。感謝:)TFS REST Apiビルド定義を更新するか、ビルドキューイング中に変数を渡すC#

私はTFS REST APIドキュメントを、次の午前 - >https://www.visualstudio.com/en-us/integrate/api/build/definition-templates

+0

REST APIをどのように使用しましたか? –

+0

問題のあるコードのセクションを共有できますか? –

答えて

0

不正な要求を使用すると、不正な構文を持っていることを意味します。あなたがあなた自身の構文を記述するためにサンプルリクエストを参照することができ

PUT https://{instance}/defaultcollection/{project}/_apis/build/definitions/{definitionid}?api-version={version} 

PUT https://fabrikam.visualstudio.com/DefaultCollection/Fabrikam-Fiber-Git/_apis/build/definitions/29?api-version=2.0 
Content-Type: application/json 
{ 
    "id": 29, 
    "revision": 1, 
    "name": "myFavoriteDefinition", 
    "definitionType": "build", 
    "documentQuality": "definition", 
    "queue": { 
    "id": 1 
    }, 
    "build": [ 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "Build solution **\\*.sln", 
     "task": { 
     "id": "71a9a2d3-a98a-4caa-96ab-affca411ecda", 
     "versionSpec": "*" 
     }, 
     "inputs": { 
     "solution": "**\\*.sln", 
     "msbuildArgs": "", 
     "platform": "$(platform)", 
     "configuration": "$(config)", 
     "clean": "false", 
     "restoreNugetPackages": "true", 
     "vsLocationMethod": "version", 
     "vsVersion": "latest", 
     "vsLocation": "", 
     "msbuildLocationMethod": "version", 
     "msbuildVersion": "latest", 
     "msbuildArchitecture": "x86", 
     "msbuildLocation": "", 
     "logProjectEvents": "true" 
     } 
    }, 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "Test Assemblies **\\*test*.dll;-:**\\obj\\**", 
     "task": { 
     "id": "ef087383-ee5e-42c7-9a53-ab56c98420f9", 
     "versionSpec": "*" 
     }, 
     "inputs": { 
     "testAssembly": "**\\*test*.dll;-:**\\obj\\**", 
     "testFiltercriteria": "", 
     "runSettingsFile": "", 
     "codeCoverageEnabled": "true", 
     "otherConsoleOptions": "", 
     "vsTestVersion": "14.0", 
     "pathtoCustomTestAdapters": "" 
     } 
    } 
    ], 
    "repository": { 
    "id": "278d5cd2-584d-4b63-824a-2ba458937249", 
    "type": "tfsgit", 
    "name": "Fabrikam-Fiber-Git", 
    "localPath": "$(sys.sourceFolder)/MyGitProject", 
    "defaultBranch": "refs/heads/master", 
    "url": "https://fabrikam.visualstudio.com/DefaultCollection/_git/Fabrikam-Fiber-Git", 
    "clean": "false" 
    }, 
    "options": [ 
    { 
     "enabled": true, 
     "definition": { 
     "id": "7c555368-ca64-4199-add6-9ebaf0b0137d" 
     }, 
     "inputs": { 
     "parallel": "false", 
     "multipliers": "[\"config\",\"platform\"]" 
     } 
    } 
    ], 
    "variables": { 
    "forceClean": { 
     "value": "false", 
     "allowOverride": true 
    }, 
    "config": { 
     "value": "debug, release", 
     "allowOverride": true 
    }, 
    "platform": { 
     "value": "any cpu", 
     "allowOverride": true 
    } 
    }, 
    "triggers": [], 
    "comment": "renamed" 
} 
+0

はい、ただし、特定のプロパティのみを更新したい - 上記のリクエストで、変数{}を更新したいです。私は、他の情報を知りたい、あるいはすべてのデータをTFSサーバーに送ることを知りたくありません。 –

2

あなたはこれを試すことができUpdate a build definitionの構文は次のように見えるはずです。 Customize your build process on fly

$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0" 

$definition = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get -ContentType application/json 
Write-Host "Befor json = $($definition | ConvertTo-Json -Depth 100)" 

    $definition.build[1].enabled = "True" 
    $definition.build[1].inputs.msbuildArgs = "\OutPath bla-bla-bla" 

    $Updatedefinition = Invoke-RestMethod -uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method PUT -Body (Convertto-Json $Updatedefinition -Depth 100) -ContentType "application/json" 

Write-Host "After json = $($Updatedefinition | ConvertTo-Json -Depth 100)" 
関連する問題