Maven 가상 레지스트리 API
이 엔드포인트의 가용성은 기능 플래그로 제어됩니다. 다음 엔드포인트를 사용하여 Maven 가상 레지스트리를 생성하고 관리합니다. 지정된 그룹의 모든 Maven 가상 레지스트리를 반환합니다. 지정된 그룹의 Maven 가상 레지스트리를 생성합니다.
히스토리
- GitLab 17.4에서
virtual_registry_maven이라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됨. - GitLab 18.1에서 기능 플래그가
maven_virtual_registry로 변경되었습니다. 기본적으로 비활성화됨. 기능 플래그virtual_registry_maven제거됨. - GitLab 18.1에서 실험에서 베타로 변경되었습니다.
- GitLab 18.2에서 GitLab.com, GitLab Self-Managed, GitLab Dedicated에서 활성화되었습니다.
이 엔드포인트의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.
이 API를 사용하여:
- Maven 가상 레지스트리를 생성하고 관리합니다.
- 업스트림 레지스트리를 구성합니다.
- 캐시 항목을 관리합니다.
- 패키지 다운로드 및 업로드를 처리합니다.
Maven 가상 레지스트리 관리#
다음 엔드포인트를 사용하여 Maven 가상 레지스트리를 생성하고 관리합니다.
모든 가상 레지스트리 목록 조회#
히스토리
downloads_count및downloaded_at이 GitLab 18.4에서 도입되었습니다.
지정된 그룹의 모든 Maven 가상 레지스트리를 반환합니다.
GET /groups/:id/-/virtual_registries/packages/maven/registries
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
문자열/정수 | 예 | 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 함. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/registries"
응답 예시:
[
{
"id": 1,
"group_id": 5,
"name": "my-virtual-registry",
"description": "My virtual registry",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
]
가상 레지스트리 생성#
지정된 그룹의 Maven 가상 레지스트리를 생성합니다.
POST /groups/:id/-/virtual_registries/packages/maven/registries
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
문자열/정수 | 예 | 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 함. |
name |
문자열 | 예 | 가상 레지스트리의 이름. |
description |
문자열 | 아니요 | 가상 레지스트리의 설명. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{"name": "my-virtual-registry", "description": "My virtual registry"}' \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/registries"
응답 예시:
{
"id": 1,
"group_id": 5,
"name": "my-virtual-registry",
"description": "My virtual registry",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
가상 레지스트리 조회#
지정된 Maven 가상 레지스트리를 반환합니다.
GET /virtual_registries/packages/maven/registries/:id
파라미터:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1"
응답 예시:
{
"id": 1,
"group_id": 5,
"name": "my-virtual-registry",
"description": "My virtual registry",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
가상 레지스트리 업데이트#
지정된 Maven 가상 레지스트리를 업데이트합니다.
PATCH /virtual_registries/packages/maven/registries/:id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
name |
문자열 | 예 | 가상 레지스트리의 이름. |
description |
문자열 | 아니요 | 가상 레지스트리의 설명. |
요청 예시:
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"name": "my-virtual-registry", "description": "My virtual registry"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1"
성공 시 200 OK 상태 코드를 반환합니다.
가상 레지스트리 삭제#
가상 레지스트리를 삭제하면 다른 가상 레지스트리와 공유되지 않은 모든 관련 업스트림 레지스트리와 해당 캐시 항목도 삭제됩니다.
지정된 Maven 가상 레지스트리를 삭제합니다.
DELETE /virtual_registries/packages/maven/registries/:id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
요청 예시:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1"
성공 시 204 No Content 상태 코드를 반환합니다.
가상 레지스트리의 캐시 항목 삭제#
Maven 가상 레지스트리의 모든 독점 업스트림 레지스트리의 모든 캐시 항목을 삭제 예약합니다. 다른 가상 레지스트리와 연관된 업스트림 레지스트리의 캐시 항목은 삭제 예약되지 않습니다.
DELETE /virtual_registries/packages/maven/registries/:id/cache
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
요청 예시:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1/cache"
성공 시 204 No Content 상태 코드를 반환합니다.
업스트림 레지스트리 관리#
다음 엔드포인트를 사용하여 업스트림 Maven 레지스트리를 구성하고 관리합니다.
모든 업스트림 레지스트리 목록 조회#
히스토리
지정된 최상위 그룹의 모든 업스트림 Maven 레지스트리를 반환합니다.
GET /groups/:id/-/virtual_registries/packages/maven/upstreams
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
문자열/정수 | 예 | 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 함. |
page |
정수 | 아니요 | 페이지 번호. 기본값 1. |
per_page |
정수 | 아니요 | 페이지당 항목 수. 기본값 20. |
upstream_name |
문자열 | 아니요 | 이름으로 퍼지 검색 필터링을 위한 업스트림 레지스트리 이름. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/upstreams"
응답 예시:
[
{
"id": 1,
"group_id": 5,
"url": "https://repo.maven.apache.org/maven2",
"name": "Maven Central",
"description": "Maven Central repository",
"cache_validity_hours": 24,
"metadata_cache_validity_hours": 24,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
]
생성 전 업스트림 레지스트리 연결 테스트#
아직 가상 레지스트리에 추가되지 않은 Maven 업스트림 레지스트리 연결을 테스트합니다. 이 엔드포인트는 업스트림 레지스트리를 생성하기 전에 연결성과 자격 증명을 검증합니다.
POST /groups/:id/-/virtual_registries/packages/maven/upstreams/test
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
문자열/정수 | 예 | 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 함. |
url |
문자열 | 예 | 업스트림 레지스트리의 URL. |
password |
문자열 | 아니요 | 업스트림 레지스트리의 비밀번호. |
username |
문자열 | 아니요 | 업스트림 레지스트리의 사용자 이름. |
요청에 username과 password를 모두 포함하거나 둘 다 제외해야 합니다. 설정하지 않으면 공개(익명) 요청으로 연결을 테스트합니다.
테스트 워크플로#
test 엔드포인트는 제공된 업스트림 URL로 테스트 경로를 사용하여 HEAD 요청을 보내 연결성 및 인증을 검증합니다. HEAD 요청에서 받은 응답은 다음과 같이 해석됩니다:
| 업스트림 응답 | 설명 | 결과 |
|---|---|---|
| 2XX | 성공 - 업스트림 접근 가능 | { "success": true } |
| 404 | 성공 - 업스트림 접근 가능하지만 테스트 아티팩트가 없음 | { "success": true } |
| 401 | 인증 실패 | { "success": false, "result": "Error: 401 - Unauthorized" } |
| 403 | 접근 거부 | { "success": false, "result": "Error: 403 - Forbidden" } |
| 5XX | 업스트림 서버 오류 | { "success": false, "result": "Error: 5XX - Server Error" } |
| 네트워크 오류 | 연결 또는 시간 초과 문제 | { "success": false, "result": "Error: Connection timeout" } |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/upstreams/test" \
--data '{"url": "https://repo.maven.apache.org/maven2"}'
응답 예시:
{
"success": true
}
가상 레지스트리의 모든 업스트림 레지스트리 목록 조회#
지정된 가상 레지스트리의 모든 업스트림 Maven 레지스트리를 반환합니다.
GET /virtual_registries/packages/maven/registries/:id/upstreams
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1/upstreams"
응답 예시:
[
{
"id": 1,
"group_id": 5,
"url": "https://repo.maven.apache.org/maven2",
"name": "Maven Central",
"description": "Maven Central repository",
"cache_validity_hours": 24,
"metadata_cache_validity_hours": 24,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstream": {
"id": 1,
"registry_id": 1,
"position": 1
}
}
]
업스트림 레지스트리 생성#
히스토리
metadata_cache_validity_hours가 GitLab 18.3에서 도입되었습니다.
지정된 Maven 가상 레지스트리의 업스트림 레지스트리를 생성합니다.
POST /virtual_registries/packages/maven/registries/:id/upstreams
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
url |
문자열 | 예 | 업스트림 레지스트리의 URL. |
cache_validity_hours |
정수 | 아니요 | 캐시 유효 기간. 기본값 24시간. |
description |
문자열 | 아니요 | 업스트림 레지스트리의 설명. |
metadata_cache_validity_hours |
정수 | 아니요 | 메타데이터 캐시 유효 기간. 기본값 24시간. |
name |
문자열 | 아니요 | 업스트림 레지스트리의 이름. |
password |
문자열 | 아니요 | 업스트림 레지스트리의 비밀번호. |
username |
문자열 | 아니요 | 업스트림 레지스트리의 사용자 이름. |
요청에 username과 password를 모두 포함하거나 둘 다 제외해야 합니다. 설정하지 않으면 공개(익명) 요청으로 업스트림에 접근합니다.
동일한 최상위 그룹에 동일한 URL과 자격 증명(username 및 password)을 가진 두 업스트림을 추가할 수 없습니다. 대신 다음 중 하나를 수행할 수 있습니다:
- 동일한 URL을 가진 각 업스트림에 다른 자격 증명을 설정합니다.
- 업스트림을 여러 가상 레지스트리와 연관시킵니다.
요청 예시:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"url": "https://repo.maven.apache.org/maven2", "name": "Maven Central", "description": "Maven Central repository", "username": <your_username>, "password": <your_password>, "cache_validity_hours": 48, "metadata_cache_validity_hours": 1}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1/upstreams"
응답 예시:
{
"id": 1,
"group_id": 5,
"url": "https://repo.maven.apache.org/maven2",
"name": "Maven Central",
"description": "Maven Central repository",
"cache_validity_hours": 48,
"metadata_cache_validity_hours": 1,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstream": {
"id": 1,
"registry_id": 1,
"position": 1
}
}
업스트림 레지스트리 조회#
지정된 업스트림 레지스트리를 반환합니다.
GET /virtual_registries/packages/maven/upstreams/:id
파라미터:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1"
응답 예시:
{
"id": 1,
"group_id": 5,
"url": "https://repo.maven.apache.org/maven2",
"name": "Maven Central",
"description": "Maven Central repository",
"cache_validity_hours": 24,
"metadata_cache_validity_hours": 24,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstreams": [
{
"id": 1,
"registry_id": 1,
"position": 1
}
]
}
업스트림 레지스트리 업데이트#
히스토리
metadata_cache_validity_hours가 GitLab 18.3에서 도입되었습니다.
지정된 업스트림 레지스트리를 업데이트합니다.
PATCH /virtual_registries/packages/maven/upstreams/:id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
cache_validity_hours |
정수 | 아니요 | 캐시 유효 기간. 기본값 24시간. |
description |
문자열 | 아니요 | 업스트림 레지스트리의 설명. |
metadata_cache_validity_hours |
정수 | 아니요 | 메타데이터 캐시 유효 기간. 기본값 24시간. |
name |
문자열 | 아니요 | 업스트림 레지스트리의 이름. |
password |
문자열 | 아니요 | 업스트림 레지스트리의 비밀번호. |
url |
문자열 | 아니요 | 업스트림 레지스트리의 URL. |
username |
문자열 | 아니요 | 업스트림 레지스트리의 사용자 이름. |
요청에 선택적 파라미터 중 하나 이상을 제공해야 합니다.
username과 password는 함께 제공하거나 둘 다 제외해야 합니다. 설정하지 않으면 공개(익명) 요청으로 업스트림에 접근합니다.
요청 예시:
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"cache_validity_hours": 72}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1"
성공 시 200 OK 상태 코드를 반환합니다.
업스트림 레지스트리 위치 업데이트#
Maven 가상 레지스트리의 순서 목록에서 업스트림 레지스트리의 위치를 업데이트합니다.
PATCH /virtual_registries/packages/maven/registry_upstreams/:id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
position |
정수 | 예 | 업스트림 레지스트리의 위치. 1에서 20 사이. |
요청 예시:
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"position": 5}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registry_upstreams/1"
성공 시 200 OK 상태 코드를 반환합니다.
업스트림 레지스트리 삭제#
지정된 업스트림 레지스트리를 삭제합니다.
DELETE /virtual_registries/packages/maven/upstreams/:id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
요청 예시:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1"
성공 시 204 No Content 상태 코드를 반환합니다.
가상 레지스트리와 업스트림 레지스트리 연결#
히스토리
- GitLab 18.1에서
maven_virtual_registry라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됨. - GitLab 18.2에서 GitLab.com, GitLab Self-Managed, GitLab Dedicated에서 활성화되었습니다.
기존 업스트림 레지스트리를 지정된 Maven 가상 레지스트리와 연결합니다.
POST /virtual_registries/packages/maven/registry_upstreams
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
registry_id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
upstream_id |
정수 | 예 | Maven 업스트림 레지스트리의 ID. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{"registry_id": 1, "upstream_id": 2}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registry_upstreams"
응답 예시:
{
"id": 5,
"registry_id": 1,
"upstream_id": 2,
"position": 2
}
가상 레지스트리에서 업스트림 레지스트리 연결 해제#
히스토리
- GitLab 18.1에서
maven_virtual_registry라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됨. - GitLab 18.2에서 GitLab.com, GitLab Self-Managed, GitLab Dedicated에서 활성화되었습니다.
지정된 Maven 가상 레지스트리에서 업스트림 레지스트리를 연결 해제합니다.
DELETE /virtual_registries/packages/maven/registry_upstreams/:id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 레지스트리 업스트림 연결의 ID. |
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registry_upstreams/1"
성공 시 204 No Content 상태 코드를 반환합니다.
업스트림 레지스트리의 캐시 항목 삭제#
지정된 업스트림 레지스트리의 모든 캐시 항목을 삭제 예약합니다.
DELETE /virtual_registries/packages/maven/upstreams/:id/cache
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
요청 예시:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/cache"
성공 시 204 No Content 상태 코드를 반환합니다.
업스트림 레지스트리 연결 테스트#
지정된 Maven 업스트림 레지스트리 연결을 테스트합니다.
GET /virtual_registries/packages/maven/upstreams/:id/test
테스트 작동 방식#
이 엔드포인트는 연결성 및 인증을 검증하기 위해 테스트 경로를 사용하여 업스트림 URL로 HEAD 요청을 수행합니다. 업스트림에 캐시된 아티팩트가 있으면 해당 상대 경로를 테스트에 사용합니다. 그렇지 않으면 더미 경로를 사용합니다. HEAD 요청에서 받은 응답은 다음과 같이 해석됩니다:
| 업스트림 응답 | 의미 | 결과 |
|---|---|---|
| 2XX | 성공 - 업스트림 접근 가능 | { "success": true } |
| 404 | 성공 - 업스트림 접근 가능하지만 테스트 아티팩트가 없음 | { "success": true } |
| 401 | 인증 실패 | { "success": false, "result": "Error: 401 - Unauthorized" } |
| 403 | 접근 거부 | { "success": false, "result": "Error: 403 - Forbidden" } |
| 5XX | 업스트림 서버 오류 | { "success": false, "result": "Error: 5XX - Server Error" } |
| 네트워크 오류 | 연결/시간 초과 문제 | { "success": false, "result": "Error: Connection timeout" } |
2XX (찾음) 및 404 (없음) 응답 모두 업스트림 레지스트리에 대한 성공적인 연결성과 인증을 나타냅니다. 테스트는 GitLab이 업스트림에 연결하고 인증할 수 있는지 검증하며, 특정 아티팩트가 존재하는지 여부는 확인하지 않습니다.
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/test"
응답 예시:
{
"success": true
}
오버라이드 파라미터로 업스트림 레지스트리 연결 테스트#
선택적 파라미터 오버라이드로 지정된 Maven 업스트림 레지스트리 연결을 테스트합니다.
이를 통해 업스트림 레지스트리 구성을 업데이트하기 전에 URL, 사용자 이름 또는 비밀번호에 대한 변경 사항을 테스트할 수 있습니다.
POST /virtual_registries/packages/maven/upstreams/:id/test
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
password |
문자열 | 아니요 | 테스트용 오버라이드 비밀번호. |
url |
문자열 | 아니요 | 테스트용 오버라이드 URL. 제공하면 업스트림의 구성된 URL 대신 이 URL로 연결을 테스트합니다. |
username |
문자열 | 아니요 | 테스트용 오버라이드 사용자 이름. |
테스트 작동 방식#
이 엔드포인트는 연결성 및 인증을 검증하기 위해 테스트 경로를 사용하여 업스트림 URL로 HEAD 요청을 수행합니다. 업스트림에 캐시된 아티팩트가 있으면 업스트림의 상대 경로를 테스트에 사용합니다. 그렇지 않으면 플레이스홀더 경로를 사용합니다.
테스트 동작은 제공된 파라미터에 따라 달라집니다:
- 파라미터 없음: 현재 구성(기존 URL, 사용자 이름, 비밀번호)으로 업스트림 테스트
- URL 오버라이드: 새 URL로 연결성 테스트, 사용자 이름과 비밀번호는 함께 제공하거나 둘 다 제외해야 함
- 자격 증명 오버라이드: 새 자격 증명으로 기존 URL 테스트
HEAD 요청에서 받은 응답은 다음과 같이 해석됩니다:
| 업스트림 응답 | 의미 | 결과 |
|---|---|---|
| 2XX | 성공. 업스트림 접근 가능 | { "success": true } |
| 404 | 성공. 업스트림 접근 가능하지만 테스트 아티팩트가 없음 | { "success": true } |
| 401 | 인증 실패 | { "success": false, "result": "Error: 401 - Unauthorized" } |
| 403 | 접근 거부 | { "success": false, "result": "Error: 403 - Forbidden" } |
| 5XX | 업스트림 서버 오류 | { "success": false, "result": "Error: 5XX - Server Error" } |
| 네트워크 오류 | 연결 또는 시간 초과 문제 | { "success": false, "result": "Error: Connection timeout" } |
2XX (찾음) 및 404 (없음) 응답 모두 업스트림 레지스트리에 대한 성공적인 연결성과 인증을 나타냅니다. 테스트는 특정 아티팩트가 존재하는지 여부는 확인하지 않습니다.
요청 예시 (기존 구성 테스트):
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/test"
요청 예시 (URL 오버라이드 및 자격 증명 없음으로 테스트):
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"url": "<https://new-repo.example.com/maven2>"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/test"
요청 예시 (URL 및 자격 증명 오버라이드로 테스트):
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"url": "<https://new-repo.example.com/maven2>", "username": "<newuser>", "password": "<newpass>"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/test"
요청 예시 (자격 증명 오버라이드로 테스트):
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"username": "<newuser>", "password": "<newpass>"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/test"
응답 예시:
{
"success": true
}
캐시 항목 관리#
다음 엔드포인트를 사용하여 Maven 가상 레지스트리의 캐시 항목을 관리합니다.
모든 업스트림 레지스트리 캐시 항목 목록 조회#
지정된 Maven 업스트림 레지스트리의 모든 캐시 항목을 반환합니다.
GET /virtual_registries/packages/maven/upstreams/:id/cache_entries
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | 업스트림 레지스트리의 ID. |
page |
정수 | 아니요 | 페이지 번호. 기본값 1. |
per_page |
정수 | 아니요 | 페이지당 항목 수. 기본값 20. |
search |
문자열 | 아니요 | 패키지의 상대 경로 검색 쿼리 (예: foo/bar/mypkg). |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/cache_entries?search=foo/bar"
응답 예시:
[
{
"id": "MTUgZm9vL2Jhci9teXBrZy8xLjAtU05BUFNIT1QvbXlwa2ctMS4wLVNOQVBTSE9ULmphcg==",
"group_id": 5,
"upstream_id": 1,
"upstream_checked_at": "2024-05-30T12:28:27.855Z",
"file_md5": "44f21d5190b5a6df8089f54799628d7e",
"file_sha1": "74d101856d26f2db17b39bd22d3204021eb0bf7d",
"size": 2048,
"relative_path": "foo/bar/package-1.0.0.pom",
"content_type": "application/xml",
"upstream_etag": "\"686897696a7c876b7e\"",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"downloads_count": 6,
"downloaded_at": "2024-06-05T14:58:32.855Z"
}
]
업스트림 레지스트리 캐시 항목 삭제#
Maven 업스트림 레지스트리의 지정된 캐시 항목을 삭제합니다.
DELETE /virtual_registries/packages/maven/cache_entries/*id
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
문자열 | 예 | 캐시 항목의 업스트림 ID와 상대 경로를 Base64로 인코딩한 값 (예: 'Zm9vL2Jhci9teXBrZy5wb20='). |
요청 예시:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/cache_entries/Zm9vL2Jhci9teXBrZy5wb20="
성공 시 204 No Content 상태 코드를 반환합니다.
패키지 작업 관리#
다음 엔드포인트를 사용하여 Maven 가상 레지스트리의 패키지 작업을 관리합니다.
이 엔드포인트는 GitLab 내부 사용을 위한 것으로, 일반적으로 수동으로 사용하도록 설계되지 않았습니다.
이 엔드포인트는 REST API 인증 방법을 따르지 않습니다. 지원되는 헤더 및 토큰 유형에 대한 자세한 내용은 Maven 가상 레지스트리를 참조하세요. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.
패키지 다운로드#
지정된 Maven 가상 레지스트리에서 패키지를 다운로드합니다. 이 리소스에 접근하려면 레지스트리로 인증해야 합니다.
GET /virtual_registries/packages/maven/:id/*path
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
path |
문자열 | 예 | 전체 패키지 경로 (예: foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar). |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/1/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar" \
--output mypkg-1.0-SNAPSHOT.jar
성공 시 200 OK 및 다음 응답 헤더를 반환합니다:
x-checksum-sha1: 파일의 SHA1 체크섬x-checksum-md5: 파일의 MD5 체크섬Content-Type: 파일의 MIME 유형Content-Length: 바이트 단위 파일 크기
패키지 업로드#
지정된 Maven 가상 레지스트리에 패키지를 업로드합니다. 이 엔드포인트는 GitLab Workhorse에서만 접근 가능합니다.
POST /virtual_registries/packages/maven/:id/*path/upload
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 | 예 | Maven 가상 레지스트리의 ID. |
file |
파일 | 예 | 업로드할 파일. |
path |
문자열 | 예 | 전체 패키지 경로 (예: foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar). |
요청 헤더:
Etag: 파일의 엔티티 태그GitLab-Workhorse-Send-Dependency-Content-Type: 파일의 콘텐츠 유형Upstream-GID: 대상 업스트림의 글로벌 ID
성공 시 200 OK 상태 코드를 반환합니다.
