2016-04-12 22 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)。 –