🧹
オフラインのランナーを一括削除 [GitHub Actions]
概要
セルフホストランナーを使用しているとランナーの登録解除ができないまま残ってしまうことがあるかと思います。
ブラウザから 1 つずつ Force remove してもよいのですがオフラインになっているランナーを一括で削除できると便利です。
コマンド
セルフホストランナー API を使用します。
GitHub CLI から叩くと楽です。
プライベートリポジトリは repo
の、パブリックリポジトリは public repo
の権限が必要です。
Bash
gh api repos/${GITHUB_REPOSITORY}/actions/runners \
--jq '.runners[] | select(.status == "offline") | .id' \
| xargs -I {} gh api -X DELETE repos/${GITHUB_REPOSITORY}/actions/runners/{}
リポジトリに紐付けている場合のコマンドです。
${GITHUB_REPOSITORY}
の部分は環境変数を設定するか直接置き換えてください。
ワークフロー
必要な権限を持った Personal Access Token を Secrets の PAT
に登録します。
.github/workflows/remove-runners.yml
name: Remove runners
on:
workflow_dispatch:
jobs:
remove:
runs-on: ubuntu-20.04
timeout-minutes: 5
env:
GH_TOKEN: ${{ secrets.PAT }}
steps:
- run: |
gh api repos/${GITHUB_REPOSITORY}/actions/runners \
--jq '.runners[] | select(.status == "offline") | .id' \
| xargs -I {} gh api -X DELETE repos/${GITHUB_REPOSITORY}/actions/runners/{}
Discussion