私はビルドをキューに入れ、powershellを使ってリリースを作成しようとしています。私は正常にビルドをキューに入れることはできますが、残念ながら、Continuous Deploymentはリリースでは起動されていません。TFS API powershellを使ってリリースを作成する
私は、これらの両方をPowerShellスクリプトで実行して、アプリケーションをリリースできるようにしたいと考えています。 http://blog.nwcadence.com/vststfs-rest-api-the-basics-and-working-with-builds-and-releases/
を要約すると次のことを実行するには:私はここに掲載の記事から取り組んできたアップデート3
をTFS 2015を使用しているリリースのリストを返すためにAPIを呼び出す
- リリースのリストのクエリを実行し、 リリース定義ID を設定
- リリース名に基づいてIDを返します
- 組み合わせでJSONを設定するアーティファクト
- のためのJSON文字列を構築ReleaseUri
- を設定するアーティファクトのIDに
- を設定するアーティファクトを
- をエイリアスを設定する
- 特定のリリースの定義情報を返すためにAPIを呼び出します必要な情報のJSONを渡すリリースの作成をキックオフするAPIを呼び出す
マイスクリプト:
$releaseDef = Invoke-RestMethod -Method Get -UseDefaultCredentials -Uri "$Uri/$defaultCollection/$TeamProject/_apis/release/definitions?api-version=2.2-preview.1"
$id = $releaseDef.value | Where-Object { $_.name -eq $releaseName} | select id
$releaseDefId = $id.id
$release = Invoke-RestMethod -Method Get -UseDefaultCredentials -ContentType "application/json" -Uri "$Uri/$defaultCollection/$TeamProject/_apis/release/definitions/$releaseDefId`?api-version=2.2-preview.1"
$alias = $release.artifacts.alias
$aliasId = $release.artifacts.id
$releaseUri = "$Uri/$defaultCollection/$TeamProject/_apis/release/releases?api-version=2.2-preview.1"
$jsonReleaseString = "{""alias"": ""$alias"", ""instanceReference"" : ""id"" : ""$aliasId""}}"
$jsonRelease = @"
{
"definitionId": $releaseDefId,
"description": $buildNbr,
"artifacts": [
$jsonReleaseString
]
}
$releaseResponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType "application/json" -Uri $releaseUri -Body $jsonRelease
すべては私が最後の文を打つまではOKと表示されます。私が受けてるのエラーは次のとおりです。
{"$id":"1","innerException":null,"message":"VS402903: The parameter with name releaseStartMetadata should be an ReleaseStartMetadata, but the specified value is not convertible to
ReleaseStartMetadata","typeName":"System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089","typeKey":"InvalidOperationException","errorCode":0,"eventId":0}
At line:1 char:12
+ $release = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType "a ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
感謝。あなたが示唆したように私は編集を行い、同じエラーを受け取ります。 –
Jsonで使用されている変数は次のとおりです。 私は上記の$ releaseコールで返されたリリース定義IDを使用しています 私は上記の$ releaseコールで返されたアーティファクト別名を使用しています 私は、成功したビルドの応答 成功したビルドの応答の呼び出しから返されたbuildnumberを使用しています –