PowerShell を使用して REST API を介してビルド定義を更新しようとしています。
使用されるスクリプトは次のとおりです。
$url = "http://tfs:8080/tfs/collection/project/_apis/build/definitions/$($buildId)?api-version=2.0"
$obj = Invoke-RestMethod -Uri $url2 -Method Get -ContentType "application/json" -UseDefaultCredentials
$json = ConvertTo-Json $obj
Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -UseDefaultCredentials
最初に新しい空の定義を試してみましたが、以下のエラーが発生しました:
コレクションには少なくとも 1 つの要素が含まれている必要があります。パラメータ名: definition.Options.Inputs
そこで、返された json から「オプション」部分を削除するコードを追加しました。
if($obj.options -ne $null){
$obj.options = $null }
そして更新は機能しました。しかし、本番環境にある「実際の」既存のビルド定義でコードを使用すると、別のエラーが発生します。
コレクションには、少なくとも 1 つの要素が含まれている必要があります。パラメーター名: definition.RetentionRules.Rule.Branches.Filter
TFS2015 Update 3 を使用しています。
REST API を介したビルド定義の単純な更新 (変更なし) が機能しないのはなぜですか?