プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2021/01/14

GitLab の Artifacts を削除する PowerShell スクリプト

event_note2021/01/14 0:25

.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"
    }
}