我正嘗試使用在https://www.visualstudio.com/en-us/docs/integrate/api/build/definitions和PowerShell腳本中記錄的REST API以編程方式更新Team Services構建定義中的變量的值。如何使用REST API更新Visual Studio Team Services構建定義?
因此,計劃是使用GET讀取定義,修改返回對象中的值,然後使用PUT更新定義。
我的問題是,最後一步(PUT)失敗,異常(看起來在服務器端)。即使我不修改定義中的任何內容,也會拋出同樣的異常。
所以簡單的說PowerShell的代碼如下:
$definitionId = 27
$url = "https://imaginera.visualstudio.com/DefaultCollection/Fidelis/_apis/build/definitions/" + $definitionId + "?api-version=2.0"
# Read the build definition.
$definition = Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Get -Uri $url
# Update the build definition.
Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Put -Uri $url -Body (ConvertTo-Json $definition) -ContentType "application/json"
而且我得到的例外是:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Value cannot be null.\r\nParameter name: definition.Options[0].Definition","typeName":"System.ArgumentNullException, mscorlib, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089","typeKey":"ArgumentNullException","errorCode":0,"eventId":0}
我覺得我現在用的是API的文檔中描述,但我可能會錯過一些東西。
什麼是詳細構建日誌?如Daniel指出的那樣指定-Depth參數,結果如何? –
試圖以同樣的方式做同樣的事情,同樣的確切的錯誤。根據答案,我將'-Depth'設置爲3,它工作得很好。 –