4
Help us understand the problem. What are the problem?

posted at

updated at

Organization

GitHub Actionsの実行履歴をまとめて削除する / How to delete workflow run histories at once

TL;DR

owner="Organization名 または User名"
repo="リポジトリ名"
file_name="ファイル名"

gh api repos/${owner}/${repo}/actions/workflows/${file_name}/runs \
| jq -r '.workflow_runs[].id' \
| xargs -P4 -I{} gh api repos/${owner}/${repo}/actions/runs/{} -X DELETE

やりたいこと

▼ 左側のWorkflow一覧から不要なWorkflowを削除したい。

Workflow一覧

▼ ちなみに1回のrunはweb上で消すこともできる。しかし今回はtippy-test-trivyのrunをまとめて削除したい。
手動で削除する場合

方法

GitHub CLIとjqでいい感じにする。

▼ Homebrewでインストール

brew install gh jq

#1 取得

gh api repos/${owner}/${repo}/actions/workflows/${file_name}/runs

公式リンク: List workflow runs

冒頭に貼ったスクショの画面ではURLが次のようになっている。末尾がファイル名(拡張子はyaml or yml)

https://github.com/${owner}/${repo}/actions/workflows/${file_name}

#2 jqでフィルター

| jq -r '.workflow_runs[].id'

全件なら上記。例えばブランチで絞りたい場合、以下のようにする。

| jq -r '.workflow_runs[] | select(.head_branch = "master") | "\(.id)"'

細かい条件を作りたい場合はjq職人になりましょう。

#3 削除

| xargs -P4 -I{} gh api repos/${owner}/${repo}/actions/runs/{} -X DELETE

公式リンク: Delete a workflow run

-P4は4並列。APIの叩き過ぎで怒られた場合は減らしてください。

まとめ(再掲)

owner="Organization名 または User名"
repo="リポジトリ名"
file_name="ファイル名"

gh api repos/${owner}/${repo}/actions/workflows/${file_name}/runs \
| jq -r '.workflow_runs[].id' \
| xargs -P4 -I{} gh api repos/{owner}/{repo}/actions/runs/{} -X DELETE
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?