4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub ActionsAdvent Calendar 2022

Day 3

不要なワークフローの実行結果をGitHubのActionsタブから永遠に消し去る方法

Last updated at Posted at 2022-12-02

この記事で削除するもの

GitHubのActionsタブを開いたときに左側に表示されるワークフローを消します。
ワークフローは実行された記録が1つでも残っていると左側に常に名前が表示されてしまい、もう不要になったワークフローであっても簡単に消すことができません。

今回はGitHub CLIを使って、サクッと削除していきます。
image.png

必要なもの

  • gh (GitHub CLIをインストール)
  • jq (jq インストールとかで検索すると各OSごとのインストール方法が見つかる)

ワークフローの実行結果を一発で削除する方法

変数を書き換えてコマンドを叩くとワークフロー名がActionsタブから消えます。
多少強引だけど、ワンライナー。

OWNER=me
REPO=myRepo
WORKFLOW_FILE_NAME=my_workflow.yml

gh api \
  -H "Accept: application/vnd.github+json" \
  /repos/$OWNER/$REPO/actions/workflows/$WORKFLOW_FILENAME/runs \
| jq '.workflow_runs[].id' \
| xargs -I RUN_ID \
gh api \
  --method DELETE \
  -H "Accept: application/vnd.github+json" \
  /repos/spine-lab/codmon/actions/runs/RUN_ID

参考: List workflow runs for a workflow
参考: Delete workflow run logs

解説

準備: 必要な情報をshell変数に入れる

削除するために必要な情報はOWNER, REPO,WORKFLOW_FILE_NAMEの3つです。
もしActionsタブから削除したいワークフローがme/myRepo/.github/workflows/my_workflow.ymlというファイル名だった場合は、下記のような値を入れます。

$ OWNER=me
$ REPO=myRepo
$ WORKFLOW_FILE_NAME=my_workflow.yml

ワークフローのRUN_IDを取得する

Actionsタブからワークフローを削除するには、対象のワークフローの実行結果をすべて削除する必要があります。実行結果を削除するにはRUN_IDを指定しなくてはいけません。
まずは、GitHub CLIを使って、RUN_IDを取得していきましょう。

$ gh api \
  -H "Accept: application/vnd.github+json" \
  /repos/$OWNER/$REPO/actions/workflows/$WORKFLOW_FILENAME/runs \

json形式のレスポンスが得られたら成功です。

しかし、json形式のままだと扱いづらいので必要な情報だけを抽出していきます。
先程と同じコマンドでjsonを取得したあと、パイプ(|)を使ってjqの標準入力にjsonを流し込みます。

$ gh api \
  -H "Accept: application/vnd.github+json" \
  /repos/$OWNER/$REPO/actions/workflows/$WORKFLOW_FILENAME/runs \
| jq '.workflow_runs[].id'

すると今度はRUN_IDだけが表示されるはずです。

実行結果を削除する

まずは安全のために、RUN_IDの部分を任意のIDに書き換えて実行してみます。
GitHubのActionsタブで消したいワークフローを開いておき、コマンド実行後に実行結果が1つ消えることを確認しましょう。

gh api \
  --method DELETE \
  -H "Accept: application/vnd.github+json" \
  /repos/spine-lab/codmon/actions/runs/RUN_ID

次に、複数の実行結果をまとめて一気に消すにはxargsを使います。
-Iオプションで適当な名前を決めたら、ghコマンドの一致する部分に標準入力で受け取った値を流し込んでくれる便利なコマンドです。
準備でshell変数を設定していたら、$OWNER, $REPO, $WORKFLOW_FILENAMEは勝手に値が入るのでそのまま実行して大丈夫です。

$ gh api \
  -H "Accept: application/vnd.github+json" \
  /repos/$OWNER/$REPO/actions/workflows/$WORKFLOW_FILENAME/runs \
| jq '.workflow_runs[].id'
| xargs -I RUN_ID \
gh api \
  --method DELETE \
  -H "Accept: application/vnd.github+json" \
  /repos/spine-lab/codmon/actions/runs/RUN_ID

最後にGitHubのActionsタブを見に行きましょう。
左側に表示されるワークフロー名の一覧から消えているはずです。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?