🗑️
指定したワークフローを一覧から削除する [GitHub Actions]
概要
GitHub Actions で試行錯誤しているとワークフローの実行ログが溜まってきて、ワークフローの一覧(下記画像)に要らなくなったものが残ることがあります。
ワークフロー内の実行ログを全て消すと一覧からも消えるのですが手動でやるのは面倒です。
ワークフローを指定して一覧から削除するコマンドを紹介します。[1]
コマンド
Mac, Linux
gh run list --workflow "${WORKFLOW}" --limit 1000 --json databaseId,status \
--jq '.[] | select(.status == "completed") | .databaseId' \
| xargs -n 1 -I {} gh api -X DELETE repos/${REPOSITORY}/actions/runs/{}
Windows (PowerShell)
gh run list --workflow "${env:WORKFLOW}" --limit 1000 --json databaseId,status `
--jq '.[] | select(.status == \"completed\") | .databaseId' `
| % { gh api -X DELETE repos/${env:REPOSITORY}/actions/runs/$_ }
環境変数部分は下記。
直接書き換えるか、事前に環境変数をセットしてください。
環境変数 | 値 | 例 |
---|---|---|
WORKFLOW |
workflow-id workflow-name filename |
12345 Delete workflow delete-workflow.yml
|
REPOSITORY |
owner/repository | SnowCait/actions-sandbox |
関連ドキュメント
参考
ワークフロー
GitHub Actions のワークフローにしておくと便利です。
delete-workflow.yml
name: Delete workflow
on:
workflow_dispatch:
inputs:
workflow:
description: workflow-id, workflow-name or filename
required: true
type: string
jobs:
delete:
runs-on: ubuntu-20.04
timeout-minutes: 1
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
WORKFLOW: ${{ github.event.inputs.workflow }}
steps:
- run: gh workflow view "${WORKFLOW}"
- run: |
gh run list --workflow "${WORKFLOW}" --limit 1000 --json databaseId,status --jq '.[] | select(.status == "completed") | .databaseId' \
| xargs -n 1 -I {} gh api -X DELETE repos/${REPOSITORY}/actions/runs/{}
env:
REPOSITORY: ${{ github.repository }}
-
ワークフローそのものを削除するわけではありません ↩︎
Discussion
ありがとうございます!参考になりました!
gh api の option として
--silent
を追加しないと実行毎に response body を表示してしまって、連続実行できない場合もあるかも?でした。