InfoGrab Docs

웹훅 문제 해결

요약

GitLab 웹훅의 일반적인 문제를 해결하고 수정합니다. 다음 방법을 사용하여 GitLab 웹훅을 디버그하고 페이로드를 캡처합니다: 웹훅 이벤트 및 JSON 페이로드에 대한 정보는 웹훅 이벤트를 참조하세요. 공개 도구를 사용하여 웹훅 페이로드를 검사하고 테스트합니다.

GitLab 웹훅의 일반적인 문제를 해결하고 수정합니다.

웹훅 디버그#

다음 방법을 사용하여 GitLab 웹훅을 디버그하고 페이로드를 캡처합니다:

웹훅 이벤트 및 JSON 페이로드에 대한 정보는 웹훅 이벤트를 참조하세요.

공개 웹훅 검사 도구 사용#

공개 도구를 사용하여 웹훅 페이로드를 검사하고 테스트합니다. 이 도구들은 HTTP 요청에 대한 catch-all 엔드포인트를 제공하고 200 OK 상태 코드로 응답합니다.

Warning

공개 도구를 사용할 때는 주의하세요. 민감한 데이터를 외부 서비스에 보낼 수 있습니다. 테스트 토큰을 사용하고 실수로 제3자에게 전송된 시크릿을 교체합니다. 보안 강화를 위해 비공개 웹훅 수신기를 만듭니다.

공개 웹훅 검사 도구에는 다음이 포함됩니다:

  • Beeceptor: 임시 HTTPS 엔드포인트를 만들고 들어오는 페이로드를 검사합니다.
  • Webhook.site: 들어오는 페이로드를 검토합니다.
  • Webhook Tester: 들어오는 페이로드를 검사하고 디버그합니다.

GitLab Development Kit(GDK) 사용#

보다 안전한 개발 환경을 위해 GitLab Development Kit(GDK)를 사용하여 로컬에서 GitLab 웹훅을 작업합니다. GDK를 사용하여 로컬 GitLab 인스턴스에서 머신의 웹훅 수신기로 웹훅을 전송합니다.

이 방법을 사용하려면 GDK를 설치하고 구성합니다.

비공개 웹훅 수신기 만들기#

공개 수신기에 웹훅 페이로드를 보낼 수 없는 경우 자체 비공개 웹훅 수신기를 만듭니다.

사전 요구 사항:

  • 시스템에 Ruby가 설치되어 있어야 합니다.

비공개 웹훅 수신기를 만들려면:

  1. 이 스크립트를 print_http_body.rb로 저장합니다:

    require 'webrick'
    
    server = WEBrick::HTTPServer.new(:Port => ARGV.first)
    server.mount_proc '/' do |req, res|
      puts req.body
    end
    
    trap 'INT' do
      server.shutdown
    end
    server.start
    
  2. 사용되지 않는 포트(예: 8000)를 선택하고 스크립트를 시작합니다:

    ruby print_http_body.rb 8000
    
  3. GitLab에서 수신기의 URL(예: http://receiver.example.com:8000/)로 웹훅을 구성합니다.

  4. Test를 선택합니다. 다음과 유사한 출력이 표시되어야 합니다:

    {"before":"077a85dd266e6f3573ef7e9ef8ce3343ad659c4e","after":"95cd4a99e93bc4bbabacfa2cd10e6725b1403c60",}
    example.com - - [14/May/2014:07:45:26 EDT] "POST / HTTP/1.1" 200 0
    - -> /
    
Note

이 수신기를 추가하려면 로컬 네트워크에 대한 요청을 허용해야 할 수 있습니다.

SSL 인증서 검증 오류 해결#

SSL 검증이 활성화된 경우 GitLab이 다음 오류와 함께 웹훅 엔드포인트의 SSL 인증서를 검증하지 못할 수 있습니다:

unable to get local issuer certificate

이 오류는 일반적으로 CAcert.org에서 결정한 신뢰할 수 있는 인증 기관에서 루트 인증서가 발급되지 않은 경우에 발생합니다.

이 문제를 해결하려면:

  1. SSL Checker를 사용하여 특정 오류를 파악합니다.
  2. 검증 실패의 일반적인 원인인 중간 인증서 누락을 확인합니다.

웹훅이 트리거되지 않음#

히스토리
  • GitLab 16.3에서 사일런트 모드에서 웹훅이 트리거되지 않음이 도입됨.

웹훅이 트리거되지 않으면 다음을 확인합니다:

오류: Webhook rate limit exceeded#

속도 제한으로 인해 웹훅이 실패할 수 있습니다. GitLab.com은 각 최상위 네임스페이스에 대해 분당 총 웹훅 호출 수를 제한합니다. 자세한 내용은 속도 제한을 참조하세요.

속도 제한이 문제인지 확인하려면:

  1. GitLab 로그에서 Webhook rate limit exceeded 메시지를 확인합니다.
  2. 웹훅을 트리거하는 이벤트 수를 줄이거나 속도 제한 요구 사항을 논의하기 위해 GitLab 지원에 문의합니다.

웹훅 문제 해결

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab 웹훅의 일반적인 문제를 해결하고 수정합니다. 다음 방법을 사용하여 GitLab 웹훅을 디버그하고 페이로드를 캡처합니다: 웹훅 이벤트 및 JSON 페이로드에 대한 정보는 웹훅 이벤트를 참조하세요. 공개 도구를 사용하여 웹훅 페이로드를 검사하고 테스트합니다.

GitLab 웹훅의 일반적인 문제를 해결하고 수정합니다.

웹훅 디버그#

다음 방법을 사용하여 GitLab 웹훅을 디버그하고 페이로드를 캡처합니다:

웹훅 이벤트 및 JSON 페이로드에 대한 정보는 웹훅 이벤트를 참조하세요.

공개 웹훅 검사 도구 사용#

공개 도구를 사용하여 웹훅 페이로드를 검사하고 테스트합니다. 이 도구들은 HTTP 요청에 대한 catch-all 엔드포인트를 제공하고 200 OK 상태 코드로 응답합니다.

Warning

공개 도구를 사용할 때는 주의하세요. 민감한 데이터를 외부 서비스에 보낼 수 있습니다. 테스트 토큰을 사용하고 실수로 제3자에게 전송된 시크릿을 교체합니다. 보안 강화를 위해 비공개 웹훅 수신기를 만듭니다.

공개 웹훅 검사 도구에는 다음이 포함됩니다:

  • Beeceptor: 임시 HTTPS 엔드포인트를 만들고 들어오는 페이로드를 검사합니다.
  • Webhook.site: 들어오는 페이로드를 검토합니다.
  • Webhook Tester: 들어오는 페이로드를 검사하고 디버그합니다.

GitLab Development Kit(GDK) 사용#

보다 안전한 개발 환경을 위해 GitLab Development Kit(GDK)를 사용하여 로컬에서 GitLab 웹훅을 작업합니다. GDK를 사용하여 로컬 GitLab 인스턴스에서 머신의 웹훅 수신기로 웹훅을 전송합니다.

이 방법을 사용하려면 GDK를 설치하고 구성합니다.

비공개 웹훅 수신기 만들기#

공개 수신기에 웹훅 페이로드를 보낼 수 없는 경우 자체 비공개 웹훅 수신기를 만듭니다.

사전 요구 사항:

  • 시스템에 Ruby가 설치되어 있어야 합니다.

비공개 웹훅 수신기를 만들려면:

  1. 이 스크립트를 print_http_body.rb로 저장합니다:

    require 'webrick'
    
    server = WEBrick::HTTPServer.new(:Port => ARGV.first)
    server.mount_proc '/' do |req, res|
      puts req.body
    end
    
    trap 'INT' do
      server.shutdown
    end
    server.start
    
  2. 사용되지 않는 포트(예: 8000)를 선택하고 스크립트를 시작합니다:

    ruby print_http_body.rb 8000
    
  3. GitLab에서 수신기의 URL(예: http://receiver.example.com:8000/)로 웹훅을 구성합니다.

  4. Test를 선택합니다. 다음과 유사한 출력이 표시되어야 합니다:

    {"before":"077a85dd266e6f3573ef7e9ef8ce3343ad659c4e","after":"95cd4a99e93bc4bbabacfa2cd10e6725b1403c60",}
    example.com - - [14/May/2014:07:45:26 EDT] "POST / HTTP/1.1" 200 0
    - -> /
    
Note

이 수신기를 추가하려면 로컬 네트워크에 대한 요청을 허용해야 할 수 있습니다.

SSL 인증서 검증 오류 해결#

SSL 검증이 활성화된 경우 GitLab이 다음 오류와 함께 웹훅 엔드포인트의 SSL 인증서를 검증하지 못할 수 있습니다:

unable to get local issuer certificate

이 오류는 일반적으로 CAcert.org에서 결정한 신뢰할 수 있는 인증 기관에서 루트 인증서가 발급되지 않은 경우에 발생합니다.

이 문제를 해결하려면:

  1. SSL Checker를 사용하여 특정 오류를 파악합니다.
  2. 검증 실패의 일반적인 원인인 중간 인증서 누락을 확인합니다.

웹훅이 트리거되지 않음#

히스토리
  • GitLab 16.3에서 사일런트 모드에서 웹훅이 트리거되지 않음이 도입됨.

웹훅이 트리거되지 않으면 다음을 확인합니다:

오류: Webhook rate limit exceeded#

속도 제한으로 인해 웹훅이 실패할 수 있습니다. GitLab.com은 각 최상위 네임스페이스에 대해 분당 총 웹훅 호출 수를 제한합니다. 자세한 내용은 속도 제한을 참조하세요.

속도 제한이 문제인지 확인하려면:

  1. GitLab 로그에서 Webhook rate limit exceeded 메시지를 확인합니다.
  2. 웹훅을 트리거하는 이벤트 수를 줄이거나 속도 제한 요구 사항을 논의하기 위해 GitLab 지원에 문의합니다.