

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 웹후크 문제 해결
<a name="action-runner-troubleshoot-webhook"></a>

**문제: **[자습서: CodeBuild 호스팅 GitHub Action 실행기 구성](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 Actions 작업을 라우팅할 때 GitHub는 모든 작업의 지정된 레이블이 있는 모든 러너로 작업을 라우팅합니다. 이 동작은 **작업 1** 또는 작업 **2**에 대해 생성된 러너가 **작업 1**을 선택할 수 있지만 **추가 레이블이 있으므로 작업 2**에 대해 생성된 러너만 **작업 2**를 선택할 수 있음을 의미합니다. **작업 2**용으로 생성된 실행기가 **작업 **1을 선택하면 **작업 ****1 실행기에 레이블이 없으므로 작업 **2가 중단됩니다. `instance-size:medium` 

**권장 솔루션: **

동일한 워크플로 실행 내에서 여러 작업을 생성할 때 각 작업에 대해 동일한 수의 레이블 재정의를 사용하거나 또는 `job1`와 같은 사용자 지정 레이블을 각 작업에 할당합니다`job2`.

오류가 지속되면 다음 지침에 따라 문제를 디버깅합니다.

1. `https://github.com/user-name/repository-name/settings/hooks`에서 GitHub 콘솔을 열어 리포지토리의 웹후크 설정을 확인합니다. 이 페이지에는 리포지토리를 위해 생성된 웹후크가 표시됩니다.

1. **편집**을 선택하고 웹후크가 **워크플로 작업** 이벤트를 전달하도록 활성화되어 있는지 확인합니다.  
![\[워크플로 작업 이벤트는 웹후크에서 활성화됩니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/github-actions-workflow-jobs.png)

1.  **최근 전송** 탭으로 이동하여 해당 `workflow_job.queued` 이벤트를 찾아 이벤트를 확장합니다.

1.  **페이로드**의 **레이블** 필드를 검토하고 예상대로인지 확인합니다.

1.  마지막으로 **응답** 탭을 검토합니다. 응답 탭에는 CodeBuild에서 반환된 응답 또는 오류 메시지가 포함되어 있기 때문입니다.  
![\[CodeBuild에서 반환된 응답 또는 오류 메시지입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/github-actions-workflow-jobs-response.png)

1.  또는 GitHub의 API를 사용하여 웹후크 실패를 디버깅할 수 있습니다. [리포지토리 웹후크 API의 목록 전송](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
   ```

    디버깅하고 전송 ID를 기록하려는 웹후크 전송을 찾은 후 [리포지토리 웹후크에 대한 전송 가져오기](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 작업은 배포가 승인되기 전에 CodeBuild 내에 빌드됩니다.

**가능한 원인:** CodeBuild는가 승인되었는지 확인하기 위해 GitHub Actions 작업과 연결된 배포 및 환경을 가져옵니다. CodeBuild가 배포 또는 환경을 가져오지 못하면 CodeBuild 빌드가 조기에 트리거될 수 있습니다.

**권장 솔루션:** CodeBuild 프로젝트와 연결된 자격 증명에 GitHub 내의 배포 및 작업에 대한 읽기 권한이 있는지 확인합니다.