관리 메뉴

너와 나의 스토리

[GitHub WebHook] Webhook 설명 및 사용법 본문

개발

[GitHub WebHook] Webhook 설명 및 사용법

노는게제일좋아! 2021. 2. 24. 14:41
반응형

Webhook

  • 웹 개발의 Webhook은 사용자 정의 callback을 사용하여 웹 페이지 또는 애플리케이션의 동작을 향상하거나 변경하는 방법이다.

 

GitHub Webhook

  • Webhook을 사용하면 GitHub Apps 또는 OAuth Apps와 같은 integration을 빌드하거나 설정할 수 있다. 
  • 이러한 이벤트(예: commit code) 중 하나가 트리거되면 HTTP POST Payload를 webhook에 설정된 URL로 보낸다. 
  • webhook을 이용해 CI 빌드를 트리거하거나 production 서버에 배포할 수 있다.

 

WebHook 설정하기

  • GitHub에서 특정 repository에서 [setting>Webhooks]에 들어가서 'Add webhook' 버튼을 누르면 다음과 같은 화면을 볼 수 있다.

  • Payload URL
    • Payload URL은 webhook POST request를 받을 서버 URL이다. 
  • Content type
    • application/json: Webhook을 JSON payload로 받음
    • application/x-www-form-urlencoded: Webhook을 payload라고 불리는 form parameter로 JSON payload를 보냄
  • Secret
    • secret을 설정하면 payload URL로 전송된 POST 요청이 GitHub Enterprise Server에서 전송되었는지 확인할 수 있다. 
    • 암호를 설정하면 Webhook POST 요청에 X-Hub-Signature 헤더가 표시된다.
    • signature header와 함께 암호를 사용하면 webhook payload를 보호하는 방법: Securing your webhooks

 

 

로컬 서버에서 WebHook 받아보기

1. 로컬 서버를 공용 인터넷에 노출시키기

  • ngok을 이용한다.
    • ngok: 로컬 개발 서버를 인터넷에 노출할 수 있도록 하는 cross-platform application이다.
  • 무료 다운: [ngrok.com/download]
  • 로컬 서버 외부로 노출하기
    • 터미널에서 다운 받은 곳으로 이동 후(cd) 다음의 명령어 실행
./ngrok http {port}
ex) ./ngrok http 4567
  • 그럼 다음과 같은 화면을 볼 수 있다.

 

2. GitHub webhook setting

  • 해당 repository의 settings>Webhooks에 payload url 설정

  • 이렇게 성공적으로 webhook을 받을 수 있다.
    • 실패한 webhoook은 redelivery 버튼을 통해 다시 보내보자

 

 

 

 

출처:

- en.wikipedia.org/wiki/Webhook

- docs.github.com/en/enterprise-server@2.22/developers/webhooks-and-events/about-webhooks

 

반응형
Comments