웹훅 개발자 가이드
GitLab 웹훅의 구조, 페이로드 정의, 트리거 방법, 테스트 및 변경 검토 프로세스를 설명합니다.
이 페이지는 GitLab 웹훅 에 대한 개발자 가이드입니다. 웹훅은 GitLab에서 발생한 이벤트 또는 변경 사항에 대한 JSON 데이터를 웹훅 수신자에게 POST합니다. 웹훅을 사용하면 API를 폴링할 필요 없이 특정 변경 사항이 발생했을 때 고객에게 알림을 보낼 수 있습니다. 웹훅 흐름 # 다음은 웹훅이 트리거되고 실행될 때 발생하는 일에 대한 상위 수준의 설명입니다. sequenceDiagram Web or API node->>+Database: Fetch data for payload Database-->>-Web or API node: Build payload Note over Web or API node,Database: Webhook triggered Web or API node->>Sidekiq: Queue webhook execution Sidekiq->>+Remote webhook receiver: POST webhook payload Remote webhook receiver-)-Database: Save response in WebHookLog Note over Database,Remote webhook receiver: Webhook executed 새 웹훅 추가 # 웹훅은 리소스 중심으로 설계되어 있습니다. 예를 들어, "emoji" 웹훅은 이모지가 부여되거나 취소될 때마다 트리거됩니다. 리소스에 대한 웹훅 지원을 추가하려면: web_hooks 테이블에 새 칼럼을 추가합니다. 새 칼럼은 다음 조건을 만족해야 합니다: Boolean 타입이어야 함 Not null <resource>_events 형식으로 이름을 지정 기본값을 false 로 설정. 마이그레이션에서 #change 메서드의 예시: def change add_column :web_hooks, :emoji_events, :boolean, null: false, default: false end TriggerableHooks.available_triggers 에 새 웹훅 지원을 추가합니다. 웹훅을 프로젝트, 그룹 또는 GitLab 인스턴스에 대해 구성할 수 있어야 하는지에 따라 ProjectHook , GroupHook , 또는 SystemHook 의 triggerable_hooks 목록에 추가합니다. 지침은 프로젝트, 그룹 및 시스템 훅 을 참조하세요. app/views/shared/web_hooks/_form.html.haml 의 웹훅 설정 양식에서 새 체크박스에 대한 프론트엔드 지원을 추가합니다. TestHooks::ProjectService 및 TestHooks::SystemService 에서 새 웹훅 테스트 지원을 추가합니다. TestHooks::GroupService 는 업데이트할 필요가 없습니다. ProjectService 만 실행 하기 때문입니다. 웹훅 페이로드 를 정의합니다. GitLab이 웹훅을 트리거 하도록 업데이트합니다. 웹훅 문서 를 추가합니다. REST API 지원을 추가합니다: API::ProjectHooks , API::G