2016-04-14 11 views
3

Ich verwende TFS 2015.2 RTM und habe gerade festgestellt, dass die Release Management vNext REST API lokal in Version 2.2-preview.1 verfügbar ist. Ich möchte eine Version erstellen, aber ich weiß nicht genau die JSON in den Körper der POST-Anfrage einfügen, da die documentation nur für VSTS funktioniert.VS402881: Es wurde keine Artefaktversion angegeben, die der Artefaktquelle 'MyBuild' entspricht. Release Management vNext REST API

Als ich die Anfrage senden, erhalte ich die Fehlermeldung:

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

Hier ist die JSON:

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

Und hier ist der Invoke-RestMethod Befehl:

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

Was JSON-Elemente fehlen mir? Wie finde ich, was in den JSON-Text eingefügt werden soll, wenn die Dokumente nicht haben, was fehlt?

+0

Das RM-REST-API nicht offiziell für On-Premise-TFS gestartet wird. Sie können Fiddler verwenden, um genau zu sehen, welcher JSON-Text verwendet wird. – ds19

+0

Interessant! Ich habe Fiddler4 früher heruntergeladen, konnte aber nur die JSON-Fehlermeldung und nicht den zu verwendenden Text finden. Weißt du, wie ich den verwendeten JSON-Körper sehen kann? Entschuldigung, ich habe das Tool nur ein paar Mal benutzt. :) – Sachi

Antwort

2

Ja, es gibt einige Unterschiede zwischen der aktuellen Version der VSTS APIs und den TFS 2015.2 APIs. Aber die meisten APIs sollten funktionieren, mit Ausnahme einiger weniger. Hier ist die documentation link.

Im Folgenden ist der erforderliche JSON zum Erstellen eines Releases aufgeführt. Der erforderliche JSON muss die name in instanceReference haben, obwohl dies optional für die aktuelle Version der VSTS-API ist.

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

Interessant! Ich werde das morgen früh überprüfen. – Sachi

+0

Großartig, arbeitete wie ein Charme! Weißt du genau, welche Anfragen in TFS 2015.2 nicht funktionieren, also weiß ich es als Heads-Up? – Sachi

+0

Ich werde etwas Arbeit machen müssen, um es zu sammeln. Ich werde versuchen, das zu tun und zu bloggen, bis dahin können Sie VSTS-Dokumenten fast sicher folgen. –

0

Basierend auf meinem Fiddler capture:

{ 
    "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

Hmm, das ist interessant. Sieht fast wie die GET-Anfrage aus. Ich glaube nicht, dass die gesamte Erfassung in die Anfrage einfließen würde, aber ich denke, das würde helfen, einen guten Start dafür zu bekommen. – Sachi

-1
+0

Link-only-Antworten sind bei Stack Overflow verpönt, da Links im Laufe der Zeit verschwinden. Wenn ein Link relevante Informationen enthält, fügen Sie ihn zusätzlich zu dem Link in den Text der Antwort ein. Auf diese Weise bleibt die Antwort relevant und nützlich, auch wenn die Verbindung nicht mehr funktioniert. –

Verwandte Themen