

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ウェブフックのトラブルシューティング
<a name="action-runner-troubleshoot-webhook"></a>

**問題:** [チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定](action-runner.md) で設定したウェブフックが機能していないか、ワークフロージョブが GitHub でハングしています。

**考えられる原因: **
+ ウェブフックの **[ワークフロージョブ]** イベントがビルドのトリガーに失敗している可能性があります。**[レスポンス]** ログを確認して、レスポンスまたはエラーメッセージを表示します。
+ ラベル設定のため、ジョブが誤ったランナーエージェントに割り当てられています。この問題は、1 つのワークフロー実行内のいずれかのジョブのラベルが別のジョブよりも少ない場合に発生する可能性があります。たとえば、同じワークフロー実行に次のラベルを持つ 2 つのジョブがある場合です。
  + **ジョブ 1**: `codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}`
  + **ジョブ 2**: `codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}`、`instance-size:medium`

  セルフホスト型 GitHub Actions ジョブをルーティングする場合、GitHub はジョブのすべての指定されたラベルを持つ任意のランナーにジョブをルーティングします。つまり、**ジョブ 1** は**ジョブ 1** または**ジョブ 2** 用に作成されたランナーによって取得できますが、**ジョブ 2** は、追加のラベルがあるため、**ジョブ 2** 用に作成されたランナーによってのみ取得できます。**ジョブ 1** が**ジョブ 2** 用に作成されたランナーによって取得された場合、**ジョブ 1** ランナーには `instance-size:medium` ラベルがないため、**ジョブ 2** はスタックします。

**推奨される解決策: **

同じワークフロー実行内で複数のジョブを作成する場合は、各ジョブに同じ数のラベル上書きを使用するか、`job1` や `job2` などのカスタムラベルを各ジョブに割り当てます。

エラーが解決されない場合は、次の手順を使用して問題をデバッグします。

1. `https://github.com/user-name/repository-name/settings/hooks` で GitHub コンソールを開き、リポジトリのウェブフック設定を表示します。このページには、リポジトリ用に作成されたウェブフックが表示されます。

1. **[編集]** を選択し、ウェブフックの **[ワークフロージョブ]** イベントの配信が有効になっていることを確認します。  
![\[ワークフロージョブイベントは、ウェブフックで有効になっています。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/github-actions-workflow-jobs.png)

1.  **[最近の配信]** タブに移動し、対応する `workflow_job.queued` イベントを見つけて、イベントを展開します。

1.  **[ペイロード]** の **[ラベル]** フィールドを確認し、期待どおりに動作していることを確認します。

1.  最後に、**[レスポンス]** タブを確認します。このタブには、CodeBuild から返されたレスポンスまたはエラーメッセージが含まれています。  
![\[CodeBuild から返されたレスポンスまたはエラーメッセージ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/github-actions-workflow-jobs-response.png)

1.  または、GitHub の API を使用してウェブフックの障害をデバッグすることもできます。「[List deliveries for a repository webhook](https://docs.github.com/en/rest/repos/webhooks?apiVersion=2022-11-28#list-deliveries-for-a-repository-webhook)」API を使用して、ウェブフックの最近の配信を表示できます。

   ```
   gh api \
     -H "Accept: application/vnd.github+json" \
     -H "X-GitHub-Api-Version: 2022-11-28" \
     /repos/owner/repo/hooks/hook-id/deliveries
   ```

    デバッグするウェブフック配信を見つけて配信 ID をメモしたら、[Get a delivery for a repository webhook](https://docs.github.com/en/rest/repos/webhooks?apiVersion=2022-11-28#get-a-delivery-for-a-repository-webhook) API を使用できます。ウェブフックの配信ペイロードに対する CodeBuild のレスポンスは、`response` セクションにあります。

   ```
   gh api \
     -H "Accept: application/vnd.github+json" \
     -H "X-GitHub-Api-Version: 2022-11-28" \
     /repos/owner/repo/hooks/hook-id/deliveries/delivery-id
   ```

**問題:** [デプロイ保護](https://docs.github.com/en/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments)ルールが有効になっている GitHub Actions は、デプロイが承認される前に CodeBuild 内でビルドをトリガーします。

**考えられる原因:** CodeBuild は、承認されているかどうかを確認するため、GitHub Actions ジョブに関連付けられているデプロイと環境を取得します (存在する場合)。CodeBuild がデプロイまたは環境の取得に失敗すると、CodeBuild ビルドが早期にトリガーされる可能性があります。

**推奨される解決策:** CodeBuild プロジェクトに関連付けられた認証情報に、GitHub 内のデプロイとアクションに対する読み取りアクセス許可があることを確認します。