그룹 푸시 규칙 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 그룹에서 새로 생성된 프로젝트의 그룹 푸시 규칙을 관리합니다. 지정된 그룹의 푸시 규칙을 조회합니다. 성공 시 200 OK와 다음 응답 속성을 반환합니다: 모든 설정이 비활성화된 푸시 규칙이 구성된 경우의 응답 예시:
이 API를 사용하여 그룹에서 새로 생성된 프로젝트의 그룹 푸시 규칙을 관리합니다.
사전 요구 사항:
- 그룹의 Owner 역할이 있거나 인스턴스의 관리자여야 합니다.
그룹의 푸시 규칙 조회#
지정된 그룹의 푸시 규칙을 조회합니다.
GET /groups/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 그룹의 ID 또는 그룹의 URL 인코딩된 경로. |
성공 시 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email_regex |
문자열 | 이 정규식과 일치하는 커밋 작성자 이메일만 허용합니다. |
branch_name_regex |
문자열 | 이 정규식과 일치하는 브랜치 이름만 허용합니다. |
commit_committer_check |
불리언 | true이면 커미터 이메일이 자신의 인증된 이메일 중 하나인 경우에만 사용자의 커밋을 허용합니다. |
commit_committer_name_check |
불리언 | true이면 커밋 작성자 이름이 GitLab 계정 이름과 일치하는 경우에만 사용자의 커밋을 허용합니다. |
commit_message_negative_regex |
문자열 | 이 정규식과 일치하는 커밋 메시지를 거부합니다. |
commit_message_regex |
문자열 | 이 정규식과 일치하는 커밋 메시지만 허용합니다. |
created_at |
문자열 | 푸시 규칙이 생성된 날짜 및 시간. |
deny_delete_tag |
불리언 | true이면 태그 삭제를 거부합니다. |
file_name_regex |
문자열 | 이 정규식과 일치하는 파일 이름을 거부합니다. |
id |
정수 | 푸시 규칙의 ID. |
max_file_size |
정수 | 허용되는 최대 파일 크기(MB). |
member_check |
불리언 | true이면 GitLab 사용자만 커밋 작성자가 될 수 있습니다. |
prevent_secrets |
불리언 | true이면 시크릿이 포함될 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
불리언 | true이면 DCO 인증이 되지 않은 커밋을 거부합니다. |
reject_unsigned_commits |
불리언 | true이면 서명되지 않은 커밋을 거부합니다. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/2/push_rule"
모든 설정이 비활성화된 푸시 규칙이 구성된 경우의 응답 예시:
{
"id": 1,
"created_at": "2020-08-17T19:09:19.580Z",
"commit_message_regex": "[a-zA-Z]",
"commit_message_negative_regex": "[x+]",
"branch_name_regex": "[a-z]",
"author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$",
"file_name_regex": "(exe)$",
"deny_delete_tag": false,
"member_check": false,
"prevent_secrets": false,
"max_file_size": 0,
"commit_committer_check": null,
"commit_committer_name_check": false,
"reject_unsigned_commits": null,
"reject_non_dco_commits": null
}
그룹에 푸시 규칙이 구성되지 않은 경우 404 Not Found를 반환합니다:
{
"message": "404 Not Found"
}
이는 푸시 규칙이 구성되지 않은 경우 리터럴 문자열 "null"과 함께 HTTP 200 OK를 반환하는 프로젝트 푸시 규칙 API와 다릅니다.
비활성화된 경우 일부 불리언 속성은 false 대신 null을 반환합니다. 예:
commit_committer_checkreject_unsigned_commitsreject_non_dco_commits
그룹에 푸시 규칙 추가#
지정된 그룹에 푸시 규칙을 추가합니다. 아직 푸시 규칙을 정의하지 않은 경우에만 사용합니다.
POST /groups/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
author_email_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 커밋 작성자 이메일만 허용합니다(예: @my-company.com$). |
branch_name_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 브랜치 이름만 허용합니다(예: (feature|hotfix)\/.*). |
commit_committer_check |
불리언 | 아니요 | true이면 커미터 이메일이 자신의 인증된 이메일 중 하나인 경우에만 사용자의 커밋을 허용합니다. |
commit_committer_name_check |
불리언 | 아니요 | true이면 커밋 작성자 이름이 GitLab 계정 이름과 일치하는 경우에만 사용자의 커밋을 허용합니다. |
commit_message_negative_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 커밋 메시지를 거부합니다(예: ssh\:\/\/). |
commit_message_regex |
문자열 | 아니요 | true이면 이 속성에 제공된 정규식과 일치하는 커밋 메시지만 허용합니다(예: Fixed \d+\..*). |
deny_delete_tag |
불리언 | 아니요 | 태그 삭제를 거부합니다. |
file_name_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 파일 이름을 거부합니다(예: (jar|exe)$). |
max_file_size |
정수 | 아니요 | 허용되는 최대 파일 크기(MB). |
member_check |
불리언 | 아니요 | true이면 GitLab 사용자만 커밋 작성자가 될 수 있습니다. |
prevent_secrets |
불리언 | 아니요 | true이면 시크릿이 포함될 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
불리언 | 아니요 | true이면 DCO 인증이 되지 않은 커밋을 거부합니다. |
reject_unsigned_commits |
불리언 | 아니요 | true이면 서명되지 않은 커밋을 거부합니다. |
성공 시 201 Created와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email_regex |
문자열 | 이 정규식과 일치하는 커밋 작성자 이메일만 허용합니다. |
branch_name_regex |
문자열 | 이 정규식과 일치하는 브랜치 이름만 허용합니다. |
commit_committer_check |
불리언 | true이면 커미터 이메일이 자신의 인증된 이메일 중 하나인 경우에만 사용자의 커밋을 허용합니다. |
commit_committer_name_check |
불리언 | true이면 커밋 작성자 이름이 GitLab 계정 이름과 일치하는 경우에만 사용자의 커밋을 허용합니다. |
commit_message_negative_regex |
문자열 | 이 정규식과 일치하는 커밋 메시지를 거부합니다. |
commit_message_regex |
문자열 | true이면 이 정규식과 일치하는 커밋 메시지만 허용합니다. |
created_at |
문자열 | 푸시 규칙이 생성된 날짜 및 시간. |
deny_delete_tag |
불리언 | true이면 태그 삭제를 거부합니다. |
file_name_regex |
문자열 | 이 정규식과 일치하는 파일 이름을 거부합니다. |
id |
정수 | 푸시 규칙의 ID. |
max_file_size |
정수 | 허용되는 최대 파일 크기(MB). |
member_check |
불리언 | true이면 GitLab 사용자만 커밋 작성자가 될 수 있습니다. |
prevent_secrets |
불리언 | true이면 시크릿이 포함될 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
불리언 | true이면 DCO 인증이 되지 않은 커밋을 거부합니다. |
reject_unsigned_commits |
불리언 | true이면 서명되지 않은 커밋을 거부합니다. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/19/push_rule?prevent_secrets=true"
응답 예시:
{
"id": 1,
"created_at": "2020-08-31T15:53:00.073Z",
"commit_committer_check": false,
"commit_committer_name_check": false,
"reject_unsigned_commits": false,
"reject_non_dco_commits": false,
"commit_message_regex": "[a-zA-Z]",
"commit_message_negative_regex": "[x+]",
"branch_name_regex": null,
"deny_delete_tag": false,
"member_check": false,
"prevent_secrets": true,
"author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$",
"file_name_regex": null,
"max_file_size": 100
}
그룹의 푸시 규칙 업데이트#
지정된 그룹의 푸시 규칙을 업데이트합니다.
PUT /groups/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
author_email_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 커밋 작성자 이메일만 허용합니다(예: @my-company.com$). |
branch_name_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 브랜치 이름만 허용합니다(예: (feature|hotfix)\/.*). |
commit_committer_check |
불리언 | 아니요 | true이면 커미터 이메일이 자신의 인증된 이메일 중 하나인 경우에만 사용자의 커밋을 허용합니다. |
commit_committer_name_check |
불리언 | 아니요 | true이면 커밋 작성자 이름이 GitLab 계정 이름과 일치하는 경우에만 사용자의 커밋을 허용합니다. |
commit_message_negative_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 커밋 메시지를 거부합니다(예: ssh\:\/\/). |
commit_message_regex |
문자열 | 아니요 | true이면 이 속성에 제공된 정규식과 일치하는 커밋 메시지만 허용합니다(예: Fixed \d+\..*). |
deny_delete_tag |
불리언 | 아니요 | true이면 태그 삭제를 거부합니다. |
file_name_regex |
문자열 | 아니요 | 이 속성에 제공된 정규식과 일치하는 파일 이름을 거부합니다(예: (jar|exe)$). |
max_file_size |
정수 | 아니요 | 허용되는 최대 파일 크기(MB). |
member_check |
불리언 | 아니요 | true이면 GitLab 사용자만 커밋 작성자가 될 수 있습니다. |
prevent_secrets |
불리언 | 아니요 | true이면 시크릿이 포함될 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
불리언 | 아니요 | true이면 DCO 인증이 되지 않은 커밋을 거부합니다. |
reject_unsigned_commits |
불리언 | 아니요 | true이면 서명되지 않은 커밋을 거부합니다. |
성공 시 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email_regex |
문자열 | 이 정규식과 일치하는 커밋 작성자 이메일만 허용합니다. |
branch_name_regex |
문자열 | 이 정규식과 일치하는 브랜치 이름만 허용합니다. |
commit_committer_check |
불리언 | true이면 커미터 이메일이 자신의 인증된 이메일 중 하나인 경우에만 사용자의 커밋을 허용합니다. |
commit_committer_name_check |
불리언 | true이면 커밋 작성자 이름이 GitLab 계정 이름과 일치하는 경우에만 사용자의 커밋을 허용합니다. |
commit_message_negative_regex |
문자열 | 이 정규식과 일치하는 커밋 메시지를 거부합니다. |
commit_message_regex |
문자열 | true이면 이 정규식과 일치하는 커밋 메시지만 허용합니다. |
created_at |
문자열 | 푸시 규칙이 생성된 날짜 및 시간. |
deny_delete_tag |
불리언 | true이면 태그 삭제를 거부합니다. |
file_name_regex |
문자열 | 이 정규식과 일치하는 파일 이름을 거부합니다. |
id |
정수 | 푸시 규칙의 ID. |
max_file_size |
정수 | 허용되는 최대 파일 크기(MB). |
member_check |
불리언 | true이면 GitLab 사용자만 커밋 작성자가 될 수 있습니다. |
prevent_secrets |
불리언 | true이면 시크릿이 포함될 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
불리언 | true이면 DCO 인증이 되지 않은 커밋을 거부합니다. |
reject_unsigned_commits |
불리언 | true이면 서명되지 않은 커밋을 거부합니다. |
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/19/push_rule?member_check=true"
응답 예시:
{
"id": 19,
"created_at": "2020-08-31T15:53:00.073Z",
"commit_committer_check": false,
"commit_committer_name_check": false,
"reject_unsigned_commits": false,
"reject_non_dco_commits": false,
"commit_message_regex": "[a-zA-Z]",
"commit_message_negative_regex": "[x+]",
"branch_name_regex": null,
"deny_delete_tag": false,
"member_check": true,
"prevent_secrets": false,
"author_email_regex": "^[A-Za-z0-9.]+@staging.gitlab.com$",
"file_name_regex": null,
"max_file_size": 100
}
그룹의 푸시 규칙 삭제#
지정된 그룹의 모든 푸시 규칙을 삭제합니다.
DELETE /groups/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
성공 시 응답 본문 없이 204 No Content를 반환합니다.
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/19/push_rule"
