컨테이너 저장소 보호 규칙 API
Offering: GitLab.com, GitLab Self-Managed
이 API를 사용하여 컨테이너 저장소 보호 규칙을 관리합니다. 지정된 프로젝트의 모든 컨테이너 저장소 보호 규칙을 나열합니다. 성공 시 200 및 컨테이너 저장소 보호 규칙 목록을 반환합니다. 다음 상태 코드를 반환할 수 있습니다:
히스토리
- GitLab 17.2에서
container_registry_protected_containers라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다. - GitLab 17.8에서 GitLab.com에서 활성화되었습니다.
- GitLab 17.8에서 일반 공개되었습니다. 기능 플래그
container_registry_protected_containers가 제거되었습니다.
이 API를 사용하여 컨테이너 저장소 보호 규칙을 관리합니다.
모든 컨테이너 저장소 보호 규칙 나열#
지정된 프로젝트의 모든 컨테이너 저장소 보호 규칙을 나열합니다.
GET /api/v4/projects/:id/registry/protection/repository/rules
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
성공 시 200 및 컨테이너 저장소 보호 규칙 목록을 반환합니다.
다음 상태 코드를 반환할 수 있습니다:
200 OK: 보호 규칙 목록.401 Unauthorized: 액세스 토큰이 유효하지 않습니다.403 Forbidden: 사용자가 이 프로젝트의 보호 규칙을 나열할 권한이 없습니다.404 Not Found: 프로젝트를 찾을 수 없습니다.
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules"
응답 예시:
[
{
"id": 1,
"project_id": 7,
"repository_path_pattern": "flightjs/flight0",
"minimum_access_level_for_push": "maintainer",
"minimum_access_level_for_delete": "maintainer"
},
{
"id": 2,
"project_id": 7,
"repository_path_pattern": "flightjs/flight1",
"minimum_access_level_for_push": "maintainer",
"minimum_access_level_for_delete": "maintainer"
}
]
컨테이너 저장소 보호 규칙 생성#
히스토리
- GitLab 17.2에서 도입되었습니다.
지정된 프로젝트에 대한 컨테이너 저장소 보호 규칙을 생성합니다.
POST /api/v4/projects/:id/registry/protection/repository/rules
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
repository_path_pattern |
문자열 | 예 | 보호 규칙에 의해 보호되는 컨테이너 저장소 경로 패턴. 예: flight/flight-*. 와일드카드 문자 * 허용. |
minimum_access_level_for_delete |
문자열 | 아니요 | 컨테이너 레지스트리에서 컨테이너 이미지를 삭제하는 데 필요한 최소 GitLab 접근 수준. 예: maintainer, owner, admin. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. |
minimum_access_level_for_push |
문자열 | 아니요 | 컨테이너 레지스트리에 컨테이너 이미지를 푸시하는 데 필요한 최소 GitLab 접근 수준. 예: maintainer, owner 또는 admin. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다. |
성공 시 201 및 생성된 컨테이너 저장소 보호 규칙을 반환합니다.
다음 상태 코드를 반환할 수 있습니다:
201 Created: 보호 규칙이 성공적으로 생성되었습니다.400 Bad Request: 보호 규칙이 유효하지 않습니다.401 Unauthorized: 액세스 토큰이 유효하지 않습니다.403 Forbidden: 사용자가 보호 규칙을 생성할 권한이 없습니다.404 Not Found: 프로젝트를 찾을 수 없습니다.422 Unprocessable Entity: 보호 규칙을 생성할 수 없습니다. 예를 들어repository_path_pattern이 이미 사용 중인 경우.
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules" \
--data '{
"repository_path_pattern": "flightjs/flight-needs-to-be-a-unique-path",
"minimum_access_level_for_push": "maintainer",
"minimum_access_level_for_delete": "maintainer"
}'
컨테이너 저장소 보호 규칙 업데이트#
히스토리
- GitLab 17.2에서 도입되었습니다.
지정된 프로젝트에 대한 컨테이너 저장소 보호 규칙을 업데이트합니다.
PATCH /api/v4/projects/:id/registry/protection/repository/rules/:protection_rule_id
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
protection_rule_id |
정수 | 예 | 업데이트할 보호 규칙의 ID. |
minimum_access_level_for_delete |
문자열 | 아니요 | 컨테이너 레지스트리에서 컨테이너 이미지를 삭제하는 데 필요한 최소 GitLab 접근 수준. 예: maintainer, owner, admin. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. 값을 해제하려면 빈 문자열 ""을 사용하세요. |
minimum_access_level_for_push |
문자열 | 아니요 | 컨테이너 레지스트리에 컨테이너 이미지를 푸시하는 데 필요한 최소 GitLab 접근 수준. 예: maintainer, owner 또는 admin. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다. 값을 해제하려면 빈 문자열 ""을 사용하세요. |
repository_path_pattern |
문자열 | 아니요 | 보호 규칙에 의해 보호되는 컨테이너 저장소 경로 패턴. 예: flight/flight-*. 와일드카드 문자 * 허용. |
성공 시 200 및 업데이트된 보호 규칙을 반환합니다.
다음 상태 코드를 반환할 수 있습니다:
200 OK: 보호 규칙이 성공적으로 업데이트되었습니다.400 Bad Request: 보호 규칙이 유효하지 않습니다.401 Unauthorized: 액세스 토큰이 유효하지 않습니다.403 Forbidden: 사용자가 보호 규칙을 업데이트할 권한이 없습니다.404 Not Found: 프로젝트를 찾을 수 없습니다.422 Unprocessable Entity: 보호 규칙을 업데이트할 수 없습니다. 예를 들어repository_path_pattern이 이미 사용 중인 경우.
요청 예시:
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules/32" \
--data '{
"repository_path_pattern": "flight/flight-*"
}'
컨테이너 저장소 보호 규칙 삭제#
히스토리
- GitLab 17.4에서 도입되었습니다.
지정된 컨테이너 저장소 보호 규칙을 삭제합니다.
DELETE /api/v4/projects/:id/registry/protection/repository/rules/:protection_rule_id
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
protection_rule_id |
정수 | 예 | 삭제할 컨테이너 저장소 보호 규칙의 ID. |
성공 시 204 No Content를 반환합니다.
다음 상태 코드를 반환할 수 있습니다:
204 No Content: 보호 규칙이 성공적으로 삭제되었습니다.400 Bad Request:id또는protection_rule_id가 누락되거나 유효하지 않습니다.401 Unauthorized: 액세스 토큰이 유효하지 않습니다.403 Forbidden: 사용자가 보호 규칙을 삭제할 권한이 없습니다.404 Not Found: 프로젝트 또는 보호 규칙을 찾을 수 없습니다.
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules/1"
