Repolode
adnanh

adnanh/webhook

설정한 셸 명령을 요청 데이터와 함께 인수나 환경 변수로 실행하는 경량 Go 서버입니다.

스타
12,207
포크
882
열린 이슈
128
마지막 커밋
2개월 전

어떤 프로젝트인가요?

webhook은 들어오는 HTTP 요청을 셸 명령 실행으로 연결하는 작은 Go 프로그램입니다. JSON 또는 YAML 파일에 훅을 정의하며, 각 훅에는 `/hooks/redeploy-webhook` 같은 엔드포인트가 되는 ID를 지정합니다. 요청이 들어오면 webhook은 헤더, 페이로드, 쿼리 변수를 파싱하고 설정된 트리거 규칙을 확인한 뒤, 해당 값을 명령줄 인수나 환경 변수로 스크립트에 전달합니다.

트리거 규칙을 사용하면 훅이 실행되는 조건을 제한할 수 있습니다. 예를 들어 비밀 값이 있어야 실행되도록 하거나, 페이로드의 특정 값을 확인하거나, 허용할 IP 대역을 지정할 수 있습니다. 템플릿에서 훅을 불러오고, HTTPS로 제공하며, TCP 포트나 Unix 소켓을 통해 리버스 프록시 뒤에서 실행할 수 있습니다. systemd 소켓 활성화로 시작하는 것도 가능합니다. 멀티파트 폼 데이터는 제한적으로 지원합니다.

webhook은 요청을 받고 명령을 실행하는 기능에만 범위를 한정하며, 스크립트의 동작은 사용자가 직접 정하도록 합니다.

핵심 기능

  • 01훅을 JSON 또는 YAML로 정의하고, 각 훅을 HTTP 엔드포인트로 제공합니다.
  • 02요청 헤더, 페이로드, 쿼리 값을 인수나 환경 변수로 명령에 전달합니다.
  • 03비밀 값 확인, IP 허용 목록 등의 트리거 규칙을 지원합니다.
  • 04HTTPS로 훅을 제공하고 TCP 또는 Unix 소켓을 통해 리버스 프록시 뒤에서 실행할 수 있습니다.
  • 05systemd 소켓 활성화와 Go 템플릿 설정 파일을 지원합니다.

활용 사례

  • GitHub 또는 Bitbucket 브랜치에 코드가 푸시되면 재배포 스크립트를 실행합니다.
  • Slack 또는 Mattermost 슬래시 명령으로 CI나 빌드 작업을 실행합니다.
  • 채팅 연동을 통해 서버 측 명령을 실행하고 결과를 답변으로 보냅니다.

빠른 시작

  1. 1

    Go 1.21 이상으로 소스에서 빌드합니다

    go build github.com/adnanh/webhook
  2. 2

    훅을 정의하는 hooks.json 파일을 만듭니다

  3. 3

    훅 파일을 지정하고 verbose 모드로 webhook을 시작합니다

    /path/to/webhook -hooks hooks.json -verbose

사용 전 알아둘 점

  • 훅은 서버에서 셸 명령을 실행하므로 무단 실행을 방지하도록 트리거 규칙과 시크릿을 설정해야 합니다.
  • 리버스 프록시 뒤에서는 IP 허용 목록 규칙이 예상대로 작동하지 않습니다.

포함된 컬렉션

토픽

자주 묻는 질문

webhook은(는) 무엇인가요?
설정한 셸 명령을 요청 데이터와 함께 인수나 환경 변수로 실행하는 경량 Go 서버입니다. webhook은 들어오는 HTTP 요청을 셸 명령 실행으로 연결하는 작은 Go 프로그램입니다. JSON 또는 YAML 파일에 훅을 정의하며, 각 훅에는 `/hooks/redeploy-webhook` 같은 엔드포인트가 되는 ID를 지정합니다. 요청이 들어오면 webhook은 헤더, 페이로드, 쿼리 변수를 파싱하고 설정된 트리거 규칙을 확인한 뒤, 해당 값을 명령줄 인수나 환경 변수로 스크립트에 전달합니다.
webhook은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
webhook은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
webhook은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. webhook의 마지막 커밋은 2026년 9월 4일입니다.
webhook은(는) 어디에 사용할 수 있나요?
GitHub 또는 Bitbucket 브랜치에 코드가 푸시되면 재배포 스크립트를 실행합니다. Slack 또는 Mattermost 슬래시 명령으로 CI나 빌드 작업을 실행합니다. 채팅 연동을 통해 서버 측 명령을 실행하고 결과를 답변으로 보냅니다.
webhook는 어떻게 설치하나요?
Go 1.21 이상으로 소스에서 빌드합니다: go build github.com/adnanh/webhook 훅을 정의하는 hooks.json 파일을 만듭니다 훅 파일을 지정하고 verbose 모드로 webhook을 시작합니다: /path/to/webhook -hooks hooks.json -verbose
webhook은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/adnanh/webhook

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트