

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Webhook 故障診斷
<a name="action-runner-troubleshoot-webhook"></a>

**問題：**您在 中設定的 Webhook [教學課程：設定 CodeBuild 託管的 GitHub 動作執行器](action-runner.md) 無法運作，或您的工作流程任務在 GitHub 上懸置。

**可能的原因： **
+ 您的 Webhook **工作流程任務**事件可能無法觸發組建。檢閱**回應**日誌以檢視回應或錯誤訊息。
+ 您的任務因為標籤組態而指派給不正確的執行器代理程式。當您在單一工作流程執行中的其中一個任務的標籤少於另一個任務時，可能會發生此問題。例如，如果您在相同的工作流程執行中有兩個具有下列標籤的任務：
  + **任務 1**： `codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}`
  + **任務 2**：`codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}`、 `instance-size:medium`

  路由自我託管的 GitHub 動作任務時，GitHub 會將任務路由到具有所有任務指定標籤的任何執行器。此行為表示任務 **1** 可以由為任務 1 或**任務** **2 建立的執行器挑選**，但**任務 2** 只能由為**任務 2 **建立的執行器挑選，因為它具有額外的標籤。如果**任務 1** 是由為**任務 2 **建立的執行器接管，則**任務 2** 將會停滯，因為**任務 1** 執行器沒有`instance-size:medium`標籤。

**建議的解決方案： **

在相同的工作流程執行中建立多個任務時，請為每個任務使用相同數量的標籤覆寫，或為每個任務指派自訂標籤，例如 `job1`或 `job2`。

如果錯誤仍然存在，請使用下列指示來偵錯問題。

1. 開啟位於 的 GitHub 主控台`https://github.com/user-name/repository-name/settings/hooks`，以檢視儲存庫的 Webhook 設定。在此頁面上，您會看到為儲存庫建立的 Webhook。

1. 選擇**編輯**並確認已啟用 Webhook 以交付**工作流程任務**事件。  
![\[工作流程任務事件會在 Webhook 中啟用。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/github-actions-workflow-jobs.png)

1.  導覽至**最近傳送**索引標籤，尋找對應的`workflow_job.queued`事件，然後展開事件。

1.  檢閱**承載**中的**標籤**欄位，並確認其如預期。

1.  最後，檢閱**回應**索引標籤，因為這包含 CodeBuild 傳回的回應或錯誤訊息。  
![\[CodeBuild 傳回的回應或錯誤訊息。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/github-actions-workflow-jobs-response.png)

1.  或者，您可以使用 GitHub 的 APIs偵錯 Webhook 失敗。您可以使用[儲存庫 Webhook API 的列出交付來檢視 Webhook 的最新交付](https://docs.github.com/en/rest/repos/webhooks?apiVersion=2022-11-28#list-deliveries-for-a-repository-webhook)：

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

    找到您要偵錯的 Webhook 交付並記下交付 ID 之後，您可以使用[取得儲存庫 Webhook API 的交付](https://docs.github.com/en/rest/repos/webhooks?apiVersion=2022-11-28#get-a-delivery-for-a-repository-webhook)。CodeBuild 對 Webhook 交付承載的回應可在 `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 動作觸發會在 CodeBuild 中建置，然後再核准部署。

**可能的原因：**CodeBuild 會擷取與 GitHub 動作任務相關聯的部署和環境，如果它們存在，以驗證 是否已核准。如果 CodeBuild 無法擷取部署或環境，則 CodeBuild 建置可能會提早觸發。

**建議的解決方案：**確認與 CodeBuild 專案相關聯的登入資料具有 GitHub 內部署和動作的讀取許可。