시스템 훅 API

Tier: Free, Premium, Ultimate Offering: Self-managed

모든 메서드는 관리자 권한이 필요합니다.

GitLab 사용자 인터페이스에서 시스템 훅의 URL 엔드포인트를 구성할 수 있습니다:

  1. 왼쪽 사이드바에서, 아래쪽에 있는 Admin를 선택합니다.
  2. System hooks (/admin/hooks)를 선택합니다.

시스템 훅에 대한 자세한 내용을 읽어보세요.

시스템 훅 목록

모든 시스템 훅의 목록을 가져옵니다.

GET /hooks

예제 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/hooks"

예제 응답:

[
  {
    "id":1,
    "url":"https://gitlab.example.com/hook",
    "name": "훅 이름",
    "description": "훅 설명",
    "created_at":"2016-10-31T12:32:15.192Z",
    "push_events":true,
    "tag_push_events":false,
    "merge_requests_events": true,
    "repository_update_events": true,
    "enable_ssl_verification":true,
    "url_variables": []
  }
]

시스템 훅 가져오기

ID로 시스템 훅을 가져옵니다.

GET /hooks/:id
속성 타입 필수 설명
id integer 훅의 ID

예제 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/hooks/1"

예제 응답:

[
  {
    "id": 1,
    "url": "https://gitlab.example.com/hook",
    "name": "훅 이름",
    "description": "훅 설명",
    "created_at": "2016-10-31T12:32:15.192Z",
    "push_events": true,
    "tag_push_events": false,
    "merge_requests_events": true,
    "repository_update_events": true,
    "enable_ssl_verification": true,
    "url_variables": []
  }
]

새 시스템 훅 추가

새 시스템 훅을 추가합니다.

POST /hooks
속성 타입 필수 설명
url string 훅 URL
name string 아니오 훅의 이름 (도입됨 in GitLab 17.1)
description string 아니오 훅의 설명 (도입됨 in GitLab 17.1)
token string 아니오 수신된 페이로드를 검증하기 위한 비밀 토큰; 응답에 포함되지 않음
push_events boolean 아니오 true일 때, 훅이 푸시 이벤트에서 트리거됨
tag_push_events boolean 아니오 true일 때, 훅이 새로운 태그가 푸시될 때 트리거됨
merge_requests_events boolean 아니오 머지 요청 이벤트에서 훅 트리거
repository_update_events boolean 아니오 저장소 업데이트 이벤트에서 훅 트리거
enable_ssl_verification boolean 아니오 훅 트리거 시 SSL 검증 수행
push_events_branch_filter string 아니오 일치하는 브랜치에 대해서만 푸시 이벤트에서 훅 트리거
branch_filter_strategy string 아니오 브랜치에 따라 푸시 이벤트 필터링. 가능한 값: wildcard (기본값), regex, all_branches

예제 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/hooks?url=https://gitlab.example.com/hook"

예제 응답:

[
  {
    "id":1,
    "url":"https://gitlab.example.com/hook",
    "name": "훅 이름",
    "description": "훅 설명",
    "created_at":"2016-10-31T12:32:15.192Z",
    "push_events":true,
    "tag_push_events":false,
    "merge_requests_events": true,
    "repository_update_events": true,
    "enable_ssl_verification":true,
    "url_variables": []
  }
]

시스템 훅 업데이트

기존 시스템 훅을 업데이트합니다.

PUT /hooks/:hook_id
속성 유형 필수 설명
hook_id 정수 시스템 훅의 ID
url 문자열 훅 URL
token 문자열 아니오 수신된 페이로드를 검증하는 비밀 토큰; 응답에서 반환되지 않음
push_events 불리언 아니오 true일 때, 툭 푸시 이벤트에서 훅이 실행됨
tag_push_events 불리언 아니오 true일 때, 새로운 태그가 푸시될 때 훅이 실행됨
merge_requests_events 불리언 아니오 병합 요청 이벤트에서 훅을 트리거함
repository_update_events 불리언 아니오 저장소 업데이트 이벤트에서 훅을 트리거함
enable_ssl_verification 불리언 아니오 훅을 트리거할 때 SSL 검증을 수행함
push_events_branch_filter 문자열 아니오 일치하는 브랜치에 대해서만 푸시 이벤트에서 훅을 트리거함
branch_filter_strategy 문자열 아니오 브랜치별로 푸시 이벤트를 필터링함. 가능한 값은 wildcard (기본), regex, 및 all_branches

시스템 훅 테스트

모의 데이터로 시스템 훅을 실행합니다.

POST /hooks/:id
속성 유형 필수 설명
id 정수 훅의 ID

예시 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/hooks/1"

응답은 항상 모의 데이터입니다:

{
   "project_id" : 1,
   "owner_email" : "example@gitlabhq.com",
   "owner_name" : "Someone",
   "name" : "Ruby",
   "path" : "ruby",
   "event_name" : "project_create"
}

시스템 훅 삭제

시스템 훅을 삭제합니다.

DELETE /hooks/:id
속성 유형 필수 설명
id 정수 훅의 ID

예시 요청:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/hooks/2"

URL 변수 설정

PUT /hooks/:hook_id/url_variables/:key

지원되는 속성:

속성 유형 필수 설명
hook_id 정수 시스템 훅의 ID.
key 문자열 URL 변수의 키.
value 문자열 URL 변수의 값.

성공하면, 이 엔드포인트는 응답 코드 204 No Content를 반환합니다.

URL 변수 삭제

DELETE /hooks/:hook_id/url_variables/:key

지원되는 속성:

속성 유형 필수 설명
hook_id 정수 시스템 훅의 ID.
key 문자열 URL 변수의 키.

성공하면, 이 엔드포인트는 응답 코드 204 No Content를 반환합니다.