프로젝트 푸시 규칙 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 프로젝트 푸시 규칙을 관리합니다. GitLab은 푸시 규칙의 모든 정규식에 RE2 구문을 사용합니다. 성공 시 200 OK와 다음 응답 속성을 반환합니다: 프로젝트에 대해 푸시 규칙이 구성된 적이 없으면 응답 본문에 리터럴 문자열 "null"과 함께 HTTP 200 OK를 반환합니다.
이 API를 사용하여 프로젝트 푸시 규칙을 관리합니다.
GitLab은 푸시 규칙의 모든 정규식에 RE2 구문을 사용합니다.
프로젝트 푸시 규칙 가져오기#
프로젝트의 푸시 규칙을 가져옵니다.
GET /projects/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
성공 시 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email_regex |
string | 모든 커밋 작성자 이메일은 이 정규식과 일치해야 합니다. |
branch_name_regex |
string | 모든 브랜치 이름은 이 정규식과 일치해야 합니다. |
commit_committer_check |
boolean | true인 경우, 사용자는 커미터 이메일이 자신의 확인된 이메일 중 하나인 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_committer_name_check |
boolean | true인 경우, 사용자는 커밋 작성자 이름이 자신의 GitLab 계정 이름과 일치하는 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_message_negative_regex |
string | 이 정규식과 일치하는 커밋 메시지는 허용되지 않습니다. |
commit_message_regex |
string | 모든 커밋 메시지는 이 정규식과 일치해야 합니다. |
created_at |
string | 푸시 규칙이 생성된 날짜 및 시간. |
deny_delete_tag |
boolean | true인 경우, 태그 삭제를 거부합니다. |
file_name_regex |
string | 커밋된 모든 파일 이름은 이 정규식과 일치하지 않아야 합니다. |
id |
integer | 푸시 규칙의 ID. |
max_file_size |
integer | 최대 파일 크기(MB). |
member_check |
boolean | true인 경우, 기존 GitLab 사용자로 작성자(이메일)별로 커밋을 제한합니다. |
prevent_secrets |
boolean | true인 경우, GitLab은 시크릿을 포함할 가능성이 있는 파일을 거부합니다. |
project_id |
integer | 프로젝트의 ID. |
reject_non_dco_commits |
boolean | true인 경우, DCO 인증이 없는 커밋을 거부합니다. |
reject_unsigned_commits |
boolean | true인 경우, 서명되지 않은 커밋을 거부합니다. |
프로젝트에 대해 푸시 규칙이 구성된 적이 없으면 응답 본문에 리터럴 문자열 "null"과 함께 HTTP 200 OK를 반환합니다.
이는 404 Not Found 오류를 반환하는 그룹 푸시 규칙 API와 다릅니다.
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/3/push_rule"
모든 설정이 비활성화된 푸시 규칙이 구성된 경우의 응답 예시:
{
"id": 1,
"project_id": 3,
"created_at": "2012-10-12T17:04:47Z",
"commit_message_regex": "Fixes \\d+\\..*",
"commit_message_negative_regex": "ssh\\:\\/\\/",
"branch_name_regex": "",
"deny_delete_tag": false,
"member_check": false,
"prevent_secrets": false,
"author_email_regex": "",
"file_name_regex": "",
"max_file_size": 0,
"commit_committer_check": null,
"commit_committer_name_check": false,
"reject_unsigned_commits": null,
"reject_non_dco_commits": null
}
다음 속성이 비활성화된 경우 false 대신 null을 반환합니다:
commit_committer_checkreject_unsigned_commitsreject_non_dco_commits
프로젝트에 대해 푸시 규칙이 구성된 적이 없는 경우의 응답 예시:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 4
null
이는 JSON null 값이 아닌 리터럴 문자열 "null"(4자)을 반환합니다.
프로젝트 푸시 규칙 추가#
지정된 프로젝트에 푸시 규칙을 추가합니다.
POST /projects/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
author_email_regex |
string | 아니요 | 모든 커밋 작성자 이메일은 이 정규식과 일치해야 합니다. |
branch_name_regex |
string | 아니요 | 모든 브랜치 이름은 이 정규식과 일치해야 합니다. |
commit_committer_check |
boolean | 아니요 | true인 경우, 사용자는 커미터 이메일이 자신의 확인된 이메일 중 하나인 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_committer_name_check |
boolean | 아니요 | true인 경우, 사용자는 커밋 작성자 이름이 자신의 GitLab 계정 이름과 일치하는 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_message_negative_regex |
string | 아니요 | 이 정규식과 일치하는 커밋 메시지는 허용되지 않습니다. |
commit_message_regex |
string | 아니요 | 모든 커밋 메시지는 이 정규식과 일치해야 합니다. |
deny_delete_tag |
boolean | 아니요 | true인 경우, 태그 삭제를 거부합니다. |
file_name_regex |
string | 아니요 | 커밋된 모든 파일 이름은 이 정규식과 일치하지 않아야 합니다. |
max_file_size |
integer | 아니요 | 최대 파일 크기(MB). |
member_check |
boolean | 아니요 | true인 경우, 기존 GitLab 사용자로 작성자(이메일)별로 커밋을 제한합니다. |
prevent_secrets |
boolean | 아니요 | true인 경우, GitLab은 시크릿을 포함할 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
boolean | 아니요 | true인 경우, DCO 인증이 없는 커밋을 거부합니다. |
reject_unsigned_commits |
boolean | 아니요 | true인 경우, 서명되지 않은 커밋을 거부합니다. |
성공 시 201 Created와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email_regex |
string | 모든 커밋 작성자 이메일은 이 정규식과 일치해야 합니다. |
branch_name_regex |
string | 모든 브랜치 이름은 이 정규식과 일치해야 합니다. |
commit_committer_check |
boolean | true인 경우, 사용자는 커미터 이메일이 자신의 확인된 이메일 중 하나인 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_committer_name_check |
boolean | true인 경우, 사용자는 커밋 작성자 이름이 자신의 GitLab 계정 이름과 일치하는 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_message_negative_regex |
string | 이 정규식과 일치하는 커밋 메시지는 허용되지 않습니다. |
commit_message_regex |
string | 모든 커밋 메시지는 이 정규식과 일치해야 합니다. |
created_at |
string | 푸시 규칙이 생성된 날짜 및 시간. |
deny_delete_tag |
boolean | true인 경우, 태그 삭제를 거부합니다. |
file_name_regex |
string | 커밋된 모든 파일 이름은 이 정규식과 일치하지 않아야 합니다. |
id |
integer | 푸시 규칙의 ID. |
max_file_size |
integer | 최대 파일 크기(MB). |
member_check |
boolean | true인 경우, 기존 GitLab 사용자로 작성자(이메일)별로 커밋을 제한합니다. |
prevent_secrets |
boolean | true인 경우, GitLab은 시크릿을 포함할 가능성이 있는 파일을 거부합니다. |
project_id |
integer | 프로젝트의 ID. |
reject_non_dco_commits |
boolean | true인 경우, DCO 인증이 없는 커밋을 거부합니다. |
reject_unsigned_commits |
boolean | true인 경우, 서명되지 않은 커밋을 거부합니다. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/3/push_rule" \
--data "commit_message_regex=Fixes \\d+\\..*" \
--data "deny_delete_tag=false"
응답 예시:
{
"id": 1,
"project_id": 3,
"created_at": "2012-10-12T17:04:47Z",
"commit_message_regex": "Fixes \\d+\\..*",
"commit_message_negative_regex": "",
"branch_name_regex": "",
"deny_delete_tag": false,
"member_check": false,
"prevent_secrets": false,
"author_email_regex": "",
"file_name_regex": "",
"max_file_size": 0,
"commit_committer_check": false,
"commit_committer_name_check": false,
"reject_unsigned_commits": false,
"reject_non_dco_commits": false
}
프로젝트 푸시 규칙 편집#
지정된 프로젝트의 푸시 규칙을 편집합니다.
PUT /projects/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
author_email_regex |
string | 아니요 | 모든 커밋 작성자 이메일은 이 정규식과 일치해야 합니다. |
branch_name_regex |
string | 아니요 | 모든 브랜치 이름은 이 정규식과 일치해야 합니다. |
commit_committer_check |
boolean | 아니요 | true인 경우, 사용자는 커미터 이메일이 자신의 확인된 이메일 중 하나인 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_committer_name_check |
boolean | 아니요 | true인 경우, 사용자는 커밋 작성자 이름이 자신의 GitLab 계정 이름과 일치하는 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_message_negative_regex |
string | 아니요 | 이 정규식과 일치하는 커밋 메시지는 허용되지 않습니다. |
commit_message_regex |
string | 아니요 | 모든 커밋 메시지는 이 정규식과 일치해야 합니다. |
deny_delete_tag |
boolean | 아니요 | true인 경우, 태그 삭제를 거부합니다. |
file_name_regex |
string | 아니요 | 커밋된 모든 파일 이름은 이 정규식과 일치하지 않아야 합니다. |
max_file_size |
integer | 아니요 | 최대 파일 크기(MB). |
member_check |
boolean | 아니요 | true인 경우, 기존 GitLab 사용자로 작성자(이메일)별로 커밋을 제한합니다. |
prevent_secrets |
boolean | 아니요 | true인 경우, GitLab은 시크릿을 포함할 가능성이 있는 파일을 거부합니다. |
reject_non_dco_commits |
boolean | 아니요 | true인 경우, DCO 인증이 없는 커밋을 거부합니다. |
reject_unsigned_commits |
boolean | 아니요 | true인 경우, 서명되지 않은 커밋을 거부합니다. |
성공 시 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email_regex |
string | 모든 커밋 작성자 이메일은 이 정규식과 일치해야 합니다. |
branch_name_regex |
string | 모든 브랜치 이름은 이 정규식과 일치해야 합니다. |
commit_committer_check |
boolean | true인 경우, 사용자는 커미터 이메일이 자신의 확인된 이메일 중 하나인 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_committer_name_check |
boolean | true인 경우, 사용자는 커밋 작성자 이름이 자신의 GitLab 계정 이름과 일치하는 경우에만 이 저장소에 커밋을 푸시할 수 있습니다. |
commit_message_negative_regex |
string | 이 정규식과 일치하는 커밋 메시지는 허용되지 않습니다. |
commit_message_regex |
string | 모든 커밋 메시지는 이 정규식과 일치해야 합니다. |
created_at |
string | 푸시 규칙이 생성된 날짜 및 시간. |
deny_delete_tag |
boolean | true인 경우, 태그 삭제를 거부합니다. |
file_name_regex |
string | 커밋된 모든 파일 이름은 이 정규식과 일치하지 않아야 합니다. |
id |
integer | 푸시 규칙의 ID. |
max_file_size |
integer | 최대 파일 크기(MB). |
member_check |
boolean | true인 경우, 기존 GitLab 사용자로 작성자(이메일)별로 커밋을 제한합니다. |
prevent_secrets |
boolean | true인 경우, GitLab은 시크릿을 포함할 가능성이 있는 파일을 거부합니다. |
project_id |
integer | 프로젝트의 ID. |
reject_non_dco_commits |
boolean | true인 경우, DCO 인증이 없는 커밋을 거부합니다. |
reject_unsigned_commits |
boolean | true인 경우, 서명되지 않은 커밋을 거부합니다. |
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/3/push_rule" \
--data "commit_message_regex=Fixes \\d+\\..*" \
--data "deny_delete_tag=true"
응답 예시:
{
"id": 1,
"project_id": 3,
"created_at": "2012-10-12T17:04:47Z",
"commit_message_regex": "Fixes \\d+\\..*",
"commit_message_negative_regex": "",
"branch_name_regex": "",
"deny_delete_tag": true,
"member_check": false,
"prevent_secrets": false,
"author_email_regex": "",
"file_name_regex": "",
"max_file_size": 0,
"commit_committer_check": false,
"commit_committer_name_check": false,
"reject_unsigned_commits": false,
"reject_non_dco_commits": false
}
프로젝트 푸시 규칙 삭제#
프로젝트에서 푸시 규칙을 삭제합니다.
DELETE /projects/:id/push_rule
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
성공 시 204 No Content를 반환합니다.
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/3/push_rule"
