2016-04-12 6 views
2

ビルド中にVSTS APIにアクセスするOAuthトークンを新たに取得する可能性があるため、特定のビルドを削除するスクリプトを作成しようとしました。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:無効なユーザID:1c8ede55-4f4d-40e6-8038-7b4cfc94db64。サービスアイデンティティは許されません。」(プロジェクトビルドサービスとプロジェクトコレクションビルドサービス)ダイアログを閉じて再度開くとまだ保存されているようですが、ビルドを実行している間は違いはありません。 –

+0

@PascalBerger私はちょうどあなたのコードを使って簡単なテストをしました。ビルドの削除権限を設定したときと同じエラーメッセージが表示されます。ただし、ビルドプロセス中にビルドを正常に削除することはできます。 –

+0

@PascalBergerこのアカウントのアクセス許可をProject Collection Build Service(MyAccountName)に設定しました。 –

関連する問題