.gitlab-ci.yml で expire_in
を設定すれば、古い artifacts が自動で削除されるようになりますが、expire_in
を設定する前の既存の artifacts は削除されません。
その古い artifacts が大量にある場合、手動で削除していくのは大変なので、API を使って一括で削除する PowerShell スクリプトを作成してみました。
使用は自己責任でお願いいたします。
$project_id=???
$token="???"
$server="http://example.com/"
for($page=1; $page -lt 50; $page++)
{
$url = "${server}api/v4/projects/${project_id}/jobs?scope[]=success&scope[]=manual&per_page=100&page=${page}"
Write-Host "Get Jobs ${url}"
$json = Invoke-RestMethod -Headers @{ "PRIVATE-TOKEN"="${token}" } -Uri "${url}"
foreach($job in $json)
{
$job_id = $job.id
Write-Host "Erase job_id=${job_id}"
$json = Invoke-RestMethod -Method Delete -Headers @{ "PRIVATE-TOKEN"="${token}" } -Uri "${server}api/v4/projects/${project_id}/jobs/${job_id}/artifacts"
}
}