컨테이너 레지스트리 보호 규칙 API

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

Status: Experiment
History
  • Introduced in GitLab 17.2 with a flag named container_registry_protected_containers. Disabled by default.

이 기능의 사용 가능성은 기능 플래그에 의해 제어됩니다.
자세한 내용은 히스토리를 참조하세요.
이 기능은 테스트용으로 사용할 수 있지만, 프로덕션 사용에는 준비되지 않았습니다.

이 API 엔드포인트는 프로젝트의 컨테이너 레지스트리에 대한 보호 규칙을 관리합니다.
이 기능은 실험적입니다.

컨테이너 레지스트리 보호 규칙 목록

프로젝트의 컨테이너 레지스트리 보호 규칙 목록을 가져옵니다.

GET /api/v4/projects/:id/registry/protection/rules  

지원되는 속성:

Attribute Type Required Description
id integer/string Yes 프로젝트의 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/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"  
  },  
]  

컨테이너 레지스트리 보호 규칙 생성

History

프로젝트에 대한 컨테이너 레지스트리 보호 규칙을 생성합니다.

POST /api/v4/projects/:id/registry/protection/rules  

지원되는 속성:

Attribute Type Required Description
id integer/string Yes 프로젝트의 ID 또는 URL 인코딩된 경로.
repository_path_pattern string Yes 보호 규칙으로 보호되는 컨테이너 리포지토리 경로 패턴입니다. 예: flight/flight-*. 와일드카드 문자 *가 허용됩니다.
minimum_access_level_for_push string No 컨테이너 레지스트리에 컨테이너 이미지를 푸시할 수 있도록 허용하는 최소 GitLab 접근 수준입니다. 예: maintainer, owner 또는 admin. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다.
minimum_access_level_for_delete string No 컨테이너 레지스트리에서 컨테이너 이미지를 삭제할 수 있도록 허용하는 최소 GitLab 접근 수준입니다. 예: maintainer, owner, admin. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다.

성공하면 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/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"  
    }'  

컨테이너 레지스트리 보호 규칙 업데이트

프로젝트의 컨테이너 레지스트리 보호 규칙을 업데이트합니다.

PATCH /api/v4/projects/:id/registry/protection/rules/:protection_rule_id

지원되는 속성:

속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩 경로.
protection_rule_id integer 업데이트할 보호 규칙의 ID입니다.
repository_path_pattern string 아니요 보호 규칙으로 보호되는 컨테이너 리포지토리 경로 패턴입니다. 예: flight/flight-*. 와일드카드 문자 * 사용 가능.
minimum_access_level_for_push string 아니요 컨테이너 이미지를 컨테이너 레지스트리에 푸시할 수 있도록 허용하는 최소 GitLab 접근 수준입니다. 예: maintainer, owner 또는 admin. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다. 값을 제거하려면 빈 문자열 ""를 사용하세요.
minimum_access_level_for_delete string 아니요 컨테이너 레지스트리에서 컨테이너 이미지를 삭제할 수 있도록 허용하는 최소 GitLab 접근 수준입니다. 예: maintainer, owner, admin. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. 값을 제거하려면 빈 문자열 ""를 사용하세요.

성공 시, 업데이트된 보호 규칙과 함께 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/rules/32" \
  --data '{
       "repository_path_pattern": "flight/flight-*"
    }'

컨테이너 레지스트리 보호 규칙 삭제

프로젝트에서 컨테이너 레지스트리 보호 규칙을 삭제합니다.

DELETE /api/v4/projects/:id/registry/protection/rules/:protection_rule_id

지원되는 속성:

속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩 경로.
protection_rule_id integer 삭제할 컨테이너 레지스트리 보호 규칙의 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/rules/1"