보호된 패키지 API
Tier: Free, Premium, Ultimate
Offering: Self-Managed
Status: Experiment
- GitLab 17.1에서
packages_protected_packages
라는 플래그로 도입되었습니다. 기본적으로 비활성화됩니다.
이 기능의 가용성은 피처 플래그에 의해 제어됩니다.
자세한 정보는 이력을 참조하세요.
이 기능은 테스트용으로 제공되지만 프로덕션 환경에서 사용하기에는 아직 준비되지 않았습니다.
이 API는 패키지의 보호 규칙을 관리합니다. 이 기능은 실험적입니다.
패키지 보호 규칙 목록
프로젝트에서 패키지 보호 규칙의 목록을 가져옵니다.
GET /api/v4/projects/:id/packages/protection/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/packages/protection/rules"
예시 응답:
[
{
"id": 1,
"project_id": 7,
"package_name_pattern": "@flightjs/flight-package-0",
"package_type": "npm",
"minimum_access_level_for_push": "maintainer"
},
{
"id": 2,
"project_id": 7,
"package_name_pattern": "@flightjs/flight-package-1",
"package_type": "npm",
"minimum_access_level_for_push": "maintainer"
}
]
패키지 보호 규칙 생성
프로젝트에 대한 패키지 보호 규칙을 생성합니다.
POST /api/v4/projects/:id/packages/protection/rules
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
package_name_pattern
| 문자열 | 예 | 보호 규칙에 의해 보호되는 패키지 이름. 예: @my-scope/my-package-* . 와일드카드 문자 * 허용됨.
|
package_type
| 문자열 | 예 | 보호 규칙에 의해 보호되는 패키지 유형. 예: npm .
|
minimum_access_level_for_push
| 문자열 | 예 | 패키지를 푸시할 수 있는 최소한의 GitLab 액세스 수준. 반드시 maintainer 이상이어야 함. 예: maintainer , owner , admin .
|
성공하면 201
및 생성된 패키지 보호 규칙이 반환됩니다.
다음과 같은 상태 코드를 반환할 수 있습니다:
-
201 Created
: 패키지 보호 규칙이 성공적으로 생성됨. -
400 Bad Request
: 패키지 보호 규칙이 잘못됨. -
401 Unauthorized
: 액세스 토큰이 유효하지 않음. -
403 Forbidden
: 사용자가 패키지 보호 규칙을 생성할 수 있는 권한이 없음. -
404 Not Found
: 프로젝트를 찾을 수 없음. -
422 Unprocessable Entity
: 예를 들어package_name_pattern
이 이미 사용 중이기 때문에 패키지 보호 규칙을 생성할 수 없음.
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules" \
--data '{
"package_name_pattern": "package-name-pattern-*",
"package_type": "npm",
"minimum_access_level_for_push": "maintainer"
}'
패키지 보호 규칙 업데이트
프로젝트에 대한 패키지 보호 규칙을 업데이트합니다.
PATCH /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
package_protection_rule_id
| 정수 | 예 | 업데이트할 패키지 보호 규칙의 ID. |
package_name_pattern
| 문자열 | 아니요 | 보호 규칙에 의해 보호되는 패키지 이름. 예: @my-scope/my-package-* . 와일드카드 문자 * 허용됨.
|
package_type
| 문자열 | 아니요 | 보호 규칙에 의해 보호되는 패키지 유형. 예: npm .
|
minimum_access_level_for_push
| 문자열 | 아니요 | 패키지를 푸시할 수 있는 최소한의 GitLab 액세스 수준. 반드시 maintainer 이상이어야 함. 예: maintainer , owner , admin .
|
성공하면 200
및 업데이트된 패키지 보호 규칙이 반환됩니다.
다음과 같은 상태 코드를 반환할 수 있습니다:
-
200 OK
: 패키지 보호 규칙이 성공적으로 패치됨. -
400 Bad Request
: 패치가 잘못됨. -
401 Unauthorized
: 액세스 토큰이 유효하지 않음. -
403 Forbidden
: 사용자가 패키지 보호 규칙을 패치할 수 있는 권한이 없음. -
404 Not Found
: 프로젝트를 찾을 수 없음. -
422 Unprocessable Entity
: 예를 들어package_name_pattern
이 이미 사용 중이기 때문에 패키지 보호 규칙을 패치할 수 없음.
예시 요청:
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32" \
--data '{
"package_name_pattern": "new-package-name-pattern-*"
}'
패키지 보호 규칙 삭제
프로젝트에서 패키지 보호 규칙을 삭제합니다.
DELETE /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | Yes | 프로젝트의 ID 또는 URL-encoded path. |
package_protection_rule_id
| integer | Yes | 삭제할 패키지 보호 규칙의 ID입니다. |
성공하면 204 No Content
를 반환합니다.
다음과 같은 상태 코드를 반환할 수 있습니다:
-
204 No Content
: 패키지 보호 규칙이 성공적으로 삭제되었습니다. -
400 Bad Request
:id
또는package_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/packages/protection/rules/32"