ワークフローの実行ページから、ワークフローの実行が進行中か完了しているかを確認できます。 パブリックなリポジトリの分も含むワークフローの実行情報を見るには、GitHubのアカウントにログインしなければなりません。 詳しくは、「GitHub 上のアクセス権限」を参照してください。
実行が完了している場合には、結果が成功か失敗か、キャンセルされたか、またはニュートラルかを確認できます。 実行が失敗した場合には、ビルドログを表示して検索し、失敗の原因を診断してワークフローを再実行することもできます。 また、課金対象のジョブ実行時間を表示したり、ログやビルドの成果物をダウンロードすることもできます。
GitHub Actionsは、Checks APIを使用してワークフローのステータス、結果、ログを出力します。 GitHub は、ワークフローの実行に対してそれぞれ新しいチェックスイートを作成します。 チェックスイートには、ワークフロー内の各ジョブに対するチェック実行が含まれ、各ジョブにはステップが含まれています。 GitHub Actionsは、ワークフローのステップとして実行されます。 Checks API について詳しくは、「チェック用 REST API エンドポイント」をご覧ください。
注: リポジトリには有効なワークフロー ファイルだけをコミットしてください。 .github/workflows
に不正なワークフロー ファイルが含まれていると、GitHub Actions は新規のコミットのたびに失敗したワークフローの実行を生成します。
ログを表示してエラーを診断する
ワークフローの実行が失敗した場合には、どのステップが失敗の原因になったかを確認し、失敗したステップのビルドログを確かめてトラブルシューティングすることができます。 各ステップの実行にかかった時間もわかります。 ログファイルの特定の行のパーマリンクをコピーして、チームで共有することもできます。 これらのステップを実行するには、リポジトリへの読み取りアクセスが必要です。
ワークフローファイルで設定されたステップに加えて、GitHub はジョブの実行をセットアップして完了するために、各ジョブに 2 つの追加ステップを追加します。 これらのステップは、「Set up job」および「Complete job」として実行されるワークフローに記録されます。
GitHub ホステッド ランナー上のジョブの実行の場合、"ジョブの設定" ではランナー イメージの詳細が記録され、ランナー マシン上にあったプレインストールされたツールのリストへのリンクが含まれます。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [アクション] をクリックします。
-
左サイドバーで、表示するワークフローをクリックします。
-
ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
-
[ジョブ] の下、または視覚化グラフ内で、表示するジョブをクリックします。
-
失敗したステップは自動的に展開され、結果が表示されます。
-
あるいはログの中の特定の行へのリンクを取得するには、そのステップの行番号をクリックします。 このリンクは、Webブラウザのアドレスバーからコピーできます。
ログを検索する
特定のステップのビルドログを検索できます。 ログを検索する際、展開されているステップのみが結果に含まれます。 これらのステップを実行するには、リポジトリへの読み取りアクセスが必要です。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [アクション] をクリックします。
-
左サイドバーで、表示するワークフローをクリックします。
-
ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
-
[ジョブ] の下、または視覚化グラフ内で、表示するジョブをクリックします。
-
ログ出力の右上隅にある [ログの検索] 検索ボックスに、検索クエリを入力します。
ログのダウンロード
ワークフローの実行からは、ログファイルをダウンロードできます。 また、ワークフローの成果物もダウンロードできます。 詳しくは、「ワークフローからのデータの格納と共有」を参照してください。 これらのステップを実行するには、リポジトリへの読み取りアクセスが必要です。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [アクション] をクリックします。
-
左サイドバーで、表示するワークフローをクリックします。
-
ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
-
[ジョブ] の下、または視覚化グラフ内で、表示するジョブをクリックします。
-
ログの右上隅にある ドロップダウン メニューを選び、 [ログ アーカイブのダウンロード] をクリックします。
注: 部分的に再実行されたワークフローのログ アーカイブをダウンロードする場合、そのアーカイブに含まれるのは、再実行されたジョブのみです。 ワークフローから実行されたジョブのログをすべて取得するには、他のジョブを前回実行しようとしたときのログ アーカイブをダウンロードする必要があります。
ログの削除
ワークフロー実行からログ ファイルを削除するには、GitHub Web インターフェイスまたはプログラムを使用します。 これらのステップを実行するには、リポジトリへの書き込みアクセスが必要です。
GitHub Web インターフェイスを使用したログの削除
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [アクション] をクリックします。
-
左サイドバーで、表示するワークフローをクリックします。
-
ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
-
右上隅にある ドロップダウン メニューを選び、 [すべてのログの削除] をクリックします。
-
確認のプロンプトを確認します。
ログを削除すると、 [すべてのログを削除] ボタンが消えます。これは、ワークフローの実行にログ ファイルがこれ以上残っていないことを示しています。
プログラムによるログの削除
次のスクリプトを使用して、ワークフローのすべてのログを自動的に削除できます。 これは、複数のワークフロー実行のログをクリーンする便利な方法です。
次のサンプル スクリプトを実行するには:
-
コード例をコピーし、
delete-logs.sh
という名前のファイルに保存します。 -
chmod +x delete-logs.sh
で実行アクセス許可を付与します。 -
次のコマンドを実行します。
REPOSITORY_NAME
にリポジトリ名、WORKFLOW_NAME
にワークフローのファイル名を指定します。Shell ./delete-logs.sh REPOSITORY_NAME WORKFLOW_NAME
./delete-logs.sh REPOSITORY_NAME WORKFLOW_NAME
たとえば、
.github/workflows/ci.yaml
ワークフローのmonalisa/octocat
リポジトリ内のすべてのログを削除するには、./delete-logs.sh monalisa/octocat ci.yaml
を実行します。
サンプル スクリプト
#!/usr/bin/env bash # Delete all logs for a given workflow # Usage: delete-logs.sh <repository> <workflow-name> set -oe pipefail REPOSITORY=$1 WORKFLOW_NAME=$2 # Validate arguments if [[ -z "$REPOSITORY" ]]; then echo "Repository is required" exit 1 fi if [[ -z "$WORKFLOW_NAME" ]]; then echo "Workflow name is required" exit 1 fi echo "Getting all completed runs for workflow $WORKFLOW_NAME in $REPOSITORY" RUNS=$( gh api \ -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "/repos/$REPOSITORY/actions/workflows/$WORKFLOW_NAME/runs" \ --paginate \ --jq '.workflow_runs[] | select(.conclusion != "") | .id' ) echo "Found $(echo "$RUNS" | wc -l) completed runs for workflow $WORKFLOW_NAME" # Delete logs for each run for RUN in $RUNS; do echo "Deleting logs for run $RUN" gh api \ --silent \ --method DELETE \ -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "/repos/$REPOSITORY/actions/runs/$RUN/logs" || echo "Failed to delete logs for run $RUN" # Sleep for 100ms to avoid rate limiting sleep 0.1 done
#!/usr/bin/env bash
# Delete all logs for a given workflow
# Usage: delete-logs.sh <repository> <workflow-name>
set -oe pipefail
REPOSITORY=$1
WORKFLOW_NAME=$2
# Validate arguments
if [[ -z "$REPOSITORY" ]]; then
echo "Repository is required"
exit 1
fi
if [[ -z "$WORKFLOW_NAME" ]]; then
echo "Workflow name is required"
exit 1
fi
echo "Getting all completed runs for workflow $WORKFLOW_NAME in $REPOSITORY"
RUNS=$(
gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$REPOSITORY/actions/workflows/$WORKFLOW_NAME/runs" \
--paginate \
--jq '.workflow_runs[] | select(.conclusion != "") | .id'
)
echo "Found $(echo "$RUNS" | wc -l) completed runs for workflow $WORKFLOW_NAME"
# Delete logs for each run
for RUN in $RUNS; do
echo "Deleting logs for run $RUN"
gh api \
--silent \
--method DELETE \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$REPOSITORY/actions/runs/$RUN/logs" || echo "Failed to delete logs for run $RUN"
# Sleep for 100ms to avoid rate limiting
sleep 0.1
done
GitHub CLI でログを表示する
GitHub CLI の詳細については、「GitHub CLI について」を参照してください。
特定のジョブのログを表示するには、run view
サブコマンドを使います。 run-id
を、ログを表示したい実行の ID に置き換えます。 GitHub CLI は、実行からジョブを選択するためのインタラクティブメニューを返します。 run-id
を指定しない場合、GitHub CLI は、最近の実行を選ぶことができるインタラクティブ メニューを返してから、その実行からジョブを選ぶことができる別のインタラクティブ メニューを返します。
gh run view RUN_ID --log
また、--job
フラグを使って、ジョブ ID を指定することもできます。 job-id
を、ログを表示したいジョブの ID に置き換えます。
gh run view --job JOB_ID --log
grep
を使うと、ログを検索できます。 たとえば、このコマンドは、error
という単語が含まれるすべてのログ エントリを返します。
gh run view --job JOB_ID --log | grep error
失敗したステップのログをフィルター処理するには、--log
の代わりに --log-failed
を使います。
gh run view --job JOB_ID --log-failed