GitHub Actions:デバッグログ付きでジョブを再実行する
失敗した実行は、全部、失敗したジョブだけ、1つのジョブだけ、のどれでも再実行できます。再実行のたびに、その回だけデバッグログを出すこともでき、リポジトリの設定は変わりません。毎回出すなら ACTIONS_STEP_DEBUG か ACTIONS_RUNNER_DEBUG を設定します。GitHub の文書(再実行・デバッグログ)より。
再実行の3つのやり方
GitHub で実行を開きます。右上の Re-run jobs に Re-run failed jobs と Re-run all jobs、左のサイドバーのジョブの横の再実行のアイコンで、そのジョブだけ。ダイアログで Enable debug logging にチェックを入れ、Re-run jobs。
gh run rerun RUN_ID --failed --debug gh run rerun RUN_ID --debug gh run rerun --job JOB_ID --debug
- 失敗したジョブは、失敗したジョブと、それに依存するジョブを再実行します。1つのジョブは、そのジョブと、それに依存するジョブです。
- 再実行は同じ実行の新しい試行(attempt)です。コミット(
GITHUB_SHA)と ref(GITHUB_REF)は同じ、権限は再実行した人ではなく、実行を始めた人の物です。前の試行は、実行の名前の横の Latest のメニューで見られます。 - 再実行できるのは最初の実行から30日まで(その後は「Unable to retry this workflow run because it was created over a month ago」)、1つの実行につき全部と一部を合わせて50回まで、ワークフローが無効の間はできません。
デバッグログで増える物
チェックを入れると、その再実行で2種類とも出ます。ワークフローを実行できる人なら誰でも使えます。
- ステップのデバッグログ:各ステップのログが詳しくなり、ステップが
echo "::debug::…"で書いた、ふだんは隠れているメッセージも出ます。 - ランナーの診断ログ:ランナーのプロセスとワーカーのプロセスの2つのファイルが、実行のログのアーカイブ(ダウンロードする物)の
runner-diagnostic-logsフォルダーに入ります。画面のログには出ません。 - デバッグログが有効な間は
runner.debugが1なので、そのときだけ詳しく出すステップも書けます:if: runner.debug == '1'。
毎回デバッグログを出す
リポジトリのシークレットか変数を設定します(Settings > Secrets and variables > Actions):
ACTIONS_STEP_DEBUG=trueで、ステップのデバッグログ。ACTIONS_RUNNER_DEBUG=trueで、ランナーの診断ログ。- 同じ名前のシークレットと変数が両方あると、シークレットが勝ちます。
- 設定するには、組織のリポジトリなら書き込みの権限、個人のリポジトリならコラボレーターであることが要ります。組織のオーナーは組織全体に設定できます。
REST API で
curl -X POST -H "Authorization: Bearer <トークン>" \
https://api.github.com/repos/OWNER/REPO/actions/runs/RUN_ID/rerun-failed-jobs \
-d '{"enable_debug_logging": true}'
- 同じ本文が
…/runs/RUN_ID/rerun(全部のジョブ)と…/jobs/JOB_ID/rerun(1つのジョブ)にも使えます。答えは 201 Created。 - トークンには、classic なら
repoのスコープ、fine-grained なら Actions の読み書きの権限が要ります(GitHub の権限の表)。無いと HTTP 403 「Resource not accessible by personal access token」です。
IntelliJ IDEA からジョブを再実行するなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップ・ログと一緒に IDE のツールウィンドウに並べます。失敗したジョブを再実行・すべてのジョブを再実行・ジョブのジョブを再実行(英語の画面では Re-run Failed Jobs・Re-run All Jobs・Re-run Job)は同じリクエストを送り、デバッグログ付きのチェックもあります。失敗するジョブをデバッグのメッセージ付きで再実行し、新しいログを GitHub を開かずに IDE で読めます。読むのは無料、再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Unable to retry this workflow run because it was created over a month ago」 · 古い実行のログが「HTTP 410: Server Error」 · 止まらない実行をキャンセルする · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English