2016-04-14 23 views
3

我正在使用TFS 2015.2 RTM,並且我發現版本管理vNext REST API位於2.2-preview.1內部部署中。我想創建一個發行版,但我不知道確切的JSON放在POST請求的主體中,因爲documentation僅適用於VSTS。VS402881:沒有指定與工件源「MyBuild」相對應的工件版本。發佈管理vNext REST API

當我發送請求,我得到錯誤信息:

VS402881: No artifact version is specified corresponding to artifact source 'MyBuild.' Specify a valid value and try again. 

這裏的JSON:

$body = @" 
    { 
      definitionId": 1, 
    "description": "test", 
    "artifacts": [ 
     { 
     "alias": "Tailspin Toys", 
     "version": { 
       "id": 147, 
     }, 
     "instanceReference": { 
      "id": 5 
     } 
     } 
    ] 
} 
"@ 

而這裏的調用,RestMethod命令:

$releaseResponse = Invoke-RestMethod -Method Post -Credential $credential -ContentType application/json -Uri $postUri -Body $body 

什麼我缺少JSON項目?如果文檔沒有缺失的內容,我如何找到要放入JSON主體的內容?

+0

的RM REST API不正式的內部部署TFS啓動。您可以使用Fiddler來查看使用的是哪個JSON正文。 – ds19

+0

有趣!我早些時候下載了Fiddler4,但只能找到JSON錯誤消息,而不是使用什麼主體。你知道我如何看到使用的JSON體?對不起,只有幾次使用過這個工具。 :) – Sachi

回答

2

是的,當前版本的VSTS API和TFS 2015.2 API之間存在一些差異。但大多數API應該工作,除了極少數。這裏是documentation link

以下是創建發佈所需的JSON。 所需的JSON需要nameinstanceReference,儘管它對於當前版本的VSTS API是可選的。

{ 
    "definitionId": 1, 
    "description": "test", 
    "artifacts": [ 
    { 
     "alias": "Tailspin Toys", 
     "instanceReference": { 
     "id": "5", 
     "name": "<build_name>" 
     } 
    } 
    ] 
} 
+0

有趣!我明天早上檢查一下。 – Sachi

+0

太棒了,像魅力一樣工作!你是否知道TFS 2015.2中的哪些請求不起作用,所以我知道作爲單挑? – Sachi

+0

我將不得不做一些工作來收集它。我會盡力做到這一點,博客,直到那時你幾乎可以安全地遵循VSTS文檔。 –

0

根據我的小提琴手捕獲:

{ 
    "id": 0, 
    "name": "xxx", 
    "createdOn": "2016-04-15T06:48:14.173Z", 
    "createdBy": null, 
    "modifiedBy": null, 
    "modifiedOn": null, 
    "environments": [ 
    { 
     "id": 0, 
     "name": "Default Environment", 
     "rank": 1, 
     "deployStep": { 
     "id": 0, 
     "tasks": [ ] 
     }, 
     "owner": { 
     "displayName": "foobar", 
     "id": "c236ac37-97ee-4ed0-b731-36ebb4a9ed3f", 
     "isContainer": false, 
     "uniqueName": "ad\foobar", 
     "imageUrl": "http://tfs:8080/tfs/collection/_api/_common/IdentityImage?id=c236ac37-97ee-4ed0-b731-36ebb4a9ed3f&t=1460698957392&__v=5", 
     "url": "http://tfs:8080/tfs/collection/" 
     }, 
     "queueId": 1, 
     "demands": [ ], 
     "conditions": [ ], 
     "variables": { }, 
     "runOptions": { "EnvironmentOwnerEmailNotificationType": "Always" }, 
     "executionPolicy": { 
     "concurrencyCount": 0, 
     "queueDepthCount": 0 
     }, 
     "preDeployApprovals": { 
     "approvals": [ 
      { 
      "rank": 1, 
      "isAutomated": true, 
      "isNotificationOn": false, 
      "id": 0 
      } 
     ], 
     "approvalOptions": null 
     }, 
     "postDeployApprovals": { 
     "approvals": [ 
      { 
      "rank": 1, 
      "isAutomated": true, 
      "isNotificationOn": false, 
      "id": 0 
      } 
     ], 
     "approvalOptions": null 
     } 
    } 
    ], 
    "artifacts": [ ], 
    "variables": { }, 
    "triggers": [ ], 
    "releaseNameFormat": "Release-$(rev:r)", 
    "retentionPolicy": { "daysToKeep": 60 } 
} 
+0

嗯,這很有趣。幾乎看起來像GET請求。我不相信整個捕捉會進入請求,但我認爲這將有助於爲它開好一個好頭。 – Sachi

相關問題