2016-04-12 23 views
2

由於在構建過程中獲得OAuth令牌訪問VSTS API的新可能性,我試圖編寫一個刪除特定構建的腳本。刪除使用OAuth令牌構建的VSTS

閱讀構建精細這樣的作品:

$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } 
$baseUrl = "{0}{1}" -f $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI, $env:SYSTEM_TEAMPROJECTID 
$buildsUrl = [string]::Format("{0}/_apis/build/builds?api-version=2.0", $baseUrl) 
$response = Invoke-WebRequest -Uri $buildsUrl -Headers $headers 

但嘗試刪除構建我得到403禁止錯誤:

$deleteUrl = [string]::Format("{0}/_apis/build/builds/{1}?api-version=2.0", $baseUrl, $id) 
$response = Invoke-WebRequest -Uri $url -Headers $headers -Method Delete 

正在刪除是不可能的與OAuth令牌由VSTS提供給構建還是需要以不同方式調用刪除請求?

回答

4

它看起來像一個安全問題。構建服務帳戶默認情況下沒有「刪除構建」權限。將權限設置爲「允許」,然後重試。 enter image description here enter image description here

+0

謝謝。埃迪。當試圖更改構建定義上的Delete builds權限時,出現以下錯誤:VSS012010:Invalid User Id:1c8ede55-4f4d-40e6-8038-7b4cfc94db64。服務標識不被允許。(用於項目構建服務和項目收集構建服務)。關閉對話框並重新打開後,它似乎仍然保存,但在運行構建時沒有區別。 –

+0

@PascalBerger我只是用你的代碼做了一個快速測試。當您設置刪除構建權限時,我會收到相同的錯誤消息。但是構建可以在構建過程中成功刪除。 –

+0

@PascalBerger我爲此帳戶設置權限:Project Collection Build Service(MyAccountName)。 –