# ワークフロー実行ログの使用

ワークフロー実行の各ジョブのログを表示、検索、およびダウンロードできます。

> \[!NOTE]
> GitHub Enterprise Server ホステッド ランナーは、現在 GitHub ではサポートされていません。

ワークフローの実行ページから、ワークフローの実行が進行中か完了しているかを確認できます。 パブリック リポジトリなどのワークフロー実行情報を表示するには、 GitHub アカウントにログインする必要があります。 詳しくは、「[GitHubに対するアクセス許可](/ja/enterprise-server@3.22/get-started/learning-about-github/access-permissions-on-github)」をご覧ください。

実行が完了している場合には、結果が成功か失敗か、キャンセルされたか、またはニュートラルかを確認できます。 実行が失敗した場合には、ビルドログを表示して検索し、失敗の原因を診断してワークフローを再実行することもできます。 また、課金対象のジョブ実行時間を表示したり、ログやビルドの成果物をダウンロードすることもできます。

GitHub Actions Checks API を使用して、ワークフローの状態、結果、ログを出力します。
GitHub は、ワークフロー実行ごとに新しいチェック スイートを作成します。 チェックスイートには、ワークフロー内の各ジョブに対するチェック実行が含まれ、各ジョブにはステップが含まれています。
GitHub Actions はワークフローのステップとして実行されます。 Checks API の詳細については、「[チェック用 REST API エンドポイント](/ja/enterprise-server@3.22/rest/checks)」を参照してください。

> \[!NOTE]
> リポジトリには有効なワークフロー ファイルだけをコミットしてください。 `.github/workflows` に不正なワークフロー ファイルが含まれていると、GitHub Actions は新規のコミットのたびに失敗したワークフローの実行を生成します。

## ログを表示してエラーを診断する

ワークフローの実行が失敗した場合には、どのステップが失敗の原因になったかを確認し、失敗したステップのビルドログを確かめてトラブルシューティングすることができます。 各ステップの実行にかかった時間もわかります。 ログファイルの特定の行のパーマリンクをコピーして、チームで共有することもできます。 これらのステップを実行するには、リポジトリへの読み取りアクセスが必要です。

ワークフロー ファイルで構成された手順に加えて、 GitHub は、ジョブの実行を設定して完了するための 2 つのステップを各ジョブに追加します。 これらのステップは、「Set up job」および「Complete job」として実行されるワークフローに記録されます。

ホスト GitHubランナーで実行されるジョブの場合、"ジョブのセットアップ" はランナー イメージの詳細を記録し、ランナー コンピューターに存在していたプレインストール済みツールの一覧へのリンクを含みます。

1. GitHub で、リポジトリのメイン ページに移動します。
2. リポジトリ名の下にある **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Actions]** をクリックします。

   !["github/docs" リポジトリのタブのスクリーンショット。 \[アクション\] タブがオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/actions-tab-global-nav-update.png)
3. 左サイドバーで、表示するワークフローをクリックします。

   ![\[アクション\] タブの左側のサイド バーのスクリーンショット。ワークフロー "CodeQL" が濃いオレンジ色の枠線で囲まれています。](/assets/images/help/actions/superlinter-workflow-sidebar.png)
4. ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
5. **\[ジョブ]** の下、または視覚化グラフ内で、表示するジョブをクリックします。
6. 失敗したステップは自動的に展開され、結果が表示されます。
7. あるいはログの中の特定の行へのリンクを取得するには、そのステップの行番号をクリックします。 このリンクは、Webブラウザのアドレスバーからコピーできます。

   ![ジョブのログのスクリーンショット。 失敗したステップのログが展開され、行番号がオレンジ色の枠線で囲まれています。](/assets/images/help/repository/copy-link-button-updated-2.png)

## ログを検索する

特定のステップのビルドログを検索できます。 ログを検索する際、展開されているステップのみが結果に含まれます。 これらのステップを実行するには、リポジトリへの読み取りアクセスが必要です。

1. GitHub で、リポジトリのメイン ページに移動します。
2. リポジトリ名の下にある **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Actions]** をクリックします。

   !["github/docs" リポジトリのタブのスクリーンショット。 \[アクション\] タブがオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/actions-tab-global-nav-update.png)
3. 左サイドバーで、表示するワークフローをクリックします。

   ![\[アクション\] タブの左側のサイド バーのスクリーンショット。ワークフロー "CodeQL" が濃いオレンジ色の枠線で囲まれています。](/assets/images/help/actions/superlinter-workflow-sidebar.png)
4. ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
5. **\[ジョブ]** の下、または視覚化グラフ内で、表示するジョブをクリックします。
6. ログ出力の右上隅にある **\[ログの検索]** 検索ボックスに、検索クエリを入力します。

## ログのダウンロード

ワークフローの実行からは、ログファイルをダウンロードできます。 また、ワークフローの成果物もダウンロードできます。 詳しくは、「[ワークフロー成果物を使ったデータの格納と共有](/ja/enterprise-server@3.22/actions/tutorials/store-and-share-data)」をご覧ください。 これらのステップを実行するには、リポジトリへの読み取りアクセスが必要です。

1. GitHub で、リポジトリのメイン ページに移動します。
2. リポジトリ名の下にある **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Actions]** をクリックします。

   !["github/docs" リポジトリのタブのスクリーンショット。 \[アクション\] タブがオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/actions-tab-global-nav-update.png)
3. 左サイドバーで、表示するワークフローをクリックします。

   ![\[アクション\] タブの左側のサイド バーのスクリーンショット。ワークフロー "CodeQL" が濃いオレンジ色の枠線で囲まれています。](/assets/images/help/actions/superlinter-workflow-sidebar.png)
4. ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。
5. **\[ジョブ]** の下、または視覚化グラフ内で、表示するジョブをクリックします。
6. ログの右上隅にある \[ <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="Show options" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> ] ドロップダウン メニューを選択し、\[ **ログ アーカイブのダウンロード**] をクリックします。

   ![ジョブのログのスクリーンショット。 ヘッダーでは、歯車アイコンが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/actions/download-logs-drop-down.png)

> \[!NOTE]
> 部分的に再実行されたワークフローのログ アーカイブをダウンロードする場合、そのアーカイブに含まれるのは、再実行されたジョブのみです。 ワークフローから実行されたジョブのログをすべて取得するには、他のジョブを前回実行しようとしたときのログ アーカイブをダウンロードする必要があります。

## ログの削除

ワークフロー実行からログ ファイルを削除するには、 GitHub Web インターフェイスを使用するか、プログラムを使用します。 これらのステップを実行するには、リポジトリへの書き込みアクセスが必要です。

### GitHub Web インターフェイスを使用したログの削除

1. GitHub で、リポジトリのメイン ページに移動します。

2. リポジトリ名の下にある **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Actions]** をクリックします。

   !["github/docs" リポジトリのタブのスクリーンショット。 \[アクション\] タブがオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/actions-tab-global-nav-update.png)

3. 左サイドバーで、表示するワークフローをクリックします。

   ![\[アクション\] タブの左側のサイド バーのスクリーンショット。ワークフロー "CodeQL" が濃いオレンジ色の枠線で囲まれています。](/assets/images/help/actions/superlinter-workflow-sidebar.png)

4. ワークフロー実行の一覧で実行の名前をクリックすると、ワークフロー実行の概要が表示されます。

5. 右上隅にある \[ <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="Show workflow options" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg> ] ドロップダウン メニューを選択し、\[ **すべてのログを削除**] をクリックします。

   ![ワークフローの実行のページのスクリーンショット。 右上隅には、ケバブ アイコンのラベルが付いたボタンが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/actions/workflow-run-kebab-horizontal-icon.png)

6. 確認のプロンプトを確認します。

ログを削除すると、 **\[すべてのログを削除]** ボタンが消えます。これは、ワークフローの実行にログ ファイルがこれ以上残っていないことを示しています。

### プログラムによるログの削除

次のスクリプトを使用して、ワークフローのすべてのログを自動的に削除できます。 これは、複数のワークフロー実行のログをクリーンする便利な方法です。

次のサンプル スクリプトを実行するには:

1. コード例をコピーし、`delete-logs.sh` という名前のファイルに保存します。
2. `chmod +x delete-logs.sh` で実行アクセス許可を付与します。
3. 次のコマンドを実行します。`REPOSITORY_NAME` にリポジトリ名、`WORKFLOW_NAME` にワークフローのファイル名を指定します。

   ```shell copy
   ./delete-logs.sh REPOSITORY_NAME WORKFLOW_NAME
   ```

   たとえば、`monalisa/octocat` ワークフローの `.github/workflows/ci.yaml` リポジトリ内のすべてのログを削除するには、`./delete-logs.sh monalisa/octocat ci.yaml` を実行します。

#### サンプル スクリプト

```bash copy
#!/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 を使用したログの表示

> \[!NOTE]
> GitHub CLI の詳細については、「[GitHub CLI について](/ja/enterprise-server@3.22/github-cli/github-cli/about-github-cli)」を参照してください。

特定のジョブのログを表示するには、`run view` サブコマンドを使います。
`run-id` を、ログを表示したい実行の ID に置き換えます。
GitHub CLI は、実行からジョブを選択するための対話型メニューを返します。
`run-id`を指定しない場合、GitHub CLIは最近の実行を選択するための対話型メニューを返し、実行からジョブを選択するための別の対話型メニューを返します。

```shell
gh run view RUN_ID --log
```

また、`--job` フラグを使って、ジョブ ID を指定することもできます。
`job-id` を、ログを表示したいジョブの ID に置き換えます。

```shell
gh run view --job JOB_ID --log
```

`grep` を使うと、ログを検索できます。 たとえば、このコマンドは、`error` という単語が含まれるすべてのログ エントリを返します。

```shell
gh run view --job JOB_ID --log | grep error
```

失敗したステップのログをフィルター処理するには、`--log-failed` の代わりに `--log` を使います。

```shell
gh run view --job JOB_ID --log-failed
```