스테이지 및 승격
아티팩트의 스테이지(예: release), 리포지토리 간 승격, 스테이지에 해당하는 버전 확인.
이 그룹의 작업과 각 작업의 액세스 규칙, 재시도 규칙, 매개 변수, 응답입니다. 모든 요청에는 키가 포함됩니다: Authorization: Bearer <키>(“인증” 참조).
작업
아티팩트 스테이지 목록
GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/stages
액세스: 리포지토리 권한: artifact.read; 파일 키: read · 재시도: 반복해도 안전함(읽기)
게시된 아티팩트의 현재 승격 스테이지(최대 16개)를 반환하며, 각 항목에 추가된 시각, 행위자, 코멘트가 있습니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
id | 경로 | string (uuid) | 예 | — |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
items | object 배열 | 예 | 요소 16개 이하 |
items[].artifactId | string (uuid) | 예 | — |
items[].stage | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
items[].promotedAt | string (date-time) | 예 | — |
items[].actor | string | 예 | — |
items[].comment | string | 예 | 1024자 이하; null일 수 있음 |
응답: 200, 400, 401, 403, 404, 409, 422, 503, 507
예제
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/stages" \
-H "Authorization: Bearer $ARKVORY_TOKEN"아티팩트에 스테이지 추가
PUT /api/v1/repositories/{repository}/artifacts/{id}/stages/{stage}
액세스: 리포지토리 권한: artifact.promote, artifact.read; 파일 키: read, write · 재시도: 반복해도 안전함: 같은 요청은 같은 결과를 냄
게시된 아티팩트에 stage(영문 소문자, 숫자, _.- 1–32자, 문자나 숫자로 시작)를 표시하고, 선택 사항인 comment(최대 1,024자)와 함께 승격 저널에 이벤트를 기록합니다. 아티팩트에 이미 있는 스테이지를 추가해도 아무것도 바뀌지 않고 원래 시각이 유지되므로, 같은 버전을 다시 승격하려면(order=promoted를 쓰는 롤백 등) 먼저 스테이지를 제거합니다. 아티팩트는 스테이지를 최대 16개까지 가질 수 있습니다(409 stage_limit).
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
id | 경로 | string (uuid) | 예 | — |
stage | 경로 | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
요청 본문 (application/json)
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
comment | string | 아니요 | 1024자 이하; null일 수 있음 |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
artifactId | string (uuid) | 예 | — |
stage | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
promotedAt | string (date-time) | 예 | — |
actor | string | 예 | — |
comment | string | 예 | 1024자 이하; null일 수 있음 |
응답: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
예제
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/stages/$STAGE" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'아티팩트에서 스테이지 제거
DELETE /api/v1/repositories/{repository}/artifacts/{id}/stages/{stage}
액세스: 리포지토리 권한: artifact.promote, artifact.read; 파일 키: read, write · 재시도: 반복해도 안전함: 같은 요청은 같은 결과를 냄
게시된 아티팩트에서 stage를 제거하고 승격 저널에 이벤트를 기록하며, 아티팩트에 없는 스테이지를 제거하는 요청도 성공합니다. 이 스테이지로 하는 패키지 확인은 즉시 이 아티팩트를 더 이상 선택하지 않습니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
id | 경로 | string (uuid) | 예 | — |
stage | 경로 | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
응답: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507
예제
curl -X DELETE "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/stages/$STAGE" \
-H "Authorization: Bearer $ARKVORY_TOKEN"아티팩트 승격 기록 목록
GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/promotions
액세스: 리포지토리 권한: artifact.read; 파일 키: read · 재시도: 반복해도 안전함(읽기)
아티팩트 하나의 저널을 오래된 순으로 반환합니다. 추가·제거된 스테이지와 다른 리포지토리로의 승격 및 다른 리포지토리로부터의 승격이 들어 있으며, 각 항목에 대응 아티팩트, 행위자, 코멘트, 시각이 있습니다. 페이지는 limit개 이벤트(1–100, 기본 50)로 구성되며 after에 next 값을 넣어 이어서 조회합니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
id | 경로 | string (uuid) | 예 | — |
after | 쿼리 | string | 아니요 | 10진수 숫자로 쓴 정수이며 문자열로 전송 |
limit | 쿼리 | string | 아니요 | 10진수 숫자로 쓴 정수이며 문자열로 전송; At most 100. |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
items | object 배열 | 예 | 요소 100개 이하 |
items[].sequence | string | 예 | 10진수 숫자로 쓴 정수이며 문자열로 전송 |
items[].repository | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
items[].artifactId | string (uuid) | 예 | — |
items[].action | string | 예 | stage.added, stage.removed, promoted, received 중 하나 |
items[].stage | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치; null일 수 있음 |
items[].mode | string | 예 | copy, move, null 중 하나; null일 수 있음 |
items[].peerRepository | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치; null일 수 있음 |
items[].peerArtifactId | string (uuid) | 예 | null일 수 있음 |
items[].actor | string | 예 | — |
items[].comment | string | 예 | 1024자 이하; null일 수 있음 |
items[].occurredAt | string (date-time) | 예 | — |
next | string | 예 | null일 수 있음 |
응답: 200, 400, 401, 403, 404, 409, 422, 503, 507
예제
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/promotions" \
-H "Authorization: Bearer $ARKVORY_TOKEN"아티팩트를 다른 리포지토리로 승격
POST /api/v1/repositories/{repository}/artifacts/{id}/promote
액세스: 리포지토리 권한: artifact.read, content.read; 파일 키: read · 재시도: 반복해도 안전함: 같은 요청은 같은 결과를 냄
바이트를 다시 보내지 않고 target에 아티팩트를 게시하며, 선택적으로 stages와 comment를 지정할 수 있습니다. 호출자는 대상 리포지토리에서도 artifact.promote 권한이 필요합니다. mode가 copy(기본)이면 원본을 유지하고, move는 이쪽에서도 artifact.promote가 필요하며 같은 트랜잭션에서 원본을 삭제 처리하고 스테이지를 함께 옮기며, 원본을 삭제할 수 없으면 409로 거부됩니다. 응답은 사본과 함께 201이고, 반복하면 같은 사본을 200으로 반환합니다. 대상에 이 패키지 버전이 이미 있으면 SHA-256이 같을 때는 그 아티팩트를 반환하고 다를 때는 409 version_exists입니다. 빌드 첨부 파일과 파일 경로는 옮겨지지 않습니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
id | 경로 | string (uuid) | 예 | — |
요청 본문 (application/json)
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
target | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
mode | string | 아니요 | copy, move 중 하나 |
stages | string 배열 | 아니요 | 요소 16개 이하; 중복 항목 없음; 각 요소: ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
comment | string | 아니요 | 1024자 이하; null일 수 있음 |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
repository | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
artifactId | string (uuid) | 예 | — |
sourceRepository | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
sourceArtifactId | string (uuid) | 예 | — |
mode | string | 예 | copy, move 중 하나 |
created | boolean | 예 | — |
stages | string 배열 | 예 | 요소 16개 이하; 중복 항목 없음; 각 요소: ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
응답: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
예제
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/promote" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target":"<target>"}'스테이지가 있는 아티팩트 목록
GET HEAD /api/v1/repositories/{repository}/stages
액세스: 리포지토리 권한: artifact.list; 파일 키: read · 재시도: 반복해도 안전함(읽기)
리포지토리의 스테이지 항목(아티팩트, 스테이지, 시각, 행위자, 코멘트)을 아티팩트와 스테이지 순으로 나열하며, 선택적으로 stage만, 또는 ids(쉼표로 구분한 ID 1–100개, 예: 패키지 한 페이지의 스테이지를 한 번에 표시)에 있는 아티팩트만 대상으로 합니다. 페이지는 limit개 항목(1–100, 기본 100)으로 구성되며 after에 next 값(<artifactId>/<stage>)을 넣어 이어서 조회합니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
stage | 쿼리 | string | 아니요 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
after | 쿼리 | string | 아니요 | — |
limit | 쿼리 | string | 아니요 | 10진수 숫자로 쓴 정수이며 문자열로 전송; At most 100. |
ids | 쿼리 | string | 아니요 | 3699자 이하; Up to 100 comma-separated artifact ids. |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
items | object 배열 | 예 | 요소 100개 이하 |
items[].artifactId | string (uuid) | 예 | — |
items[].stage | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
items[].promotedAt | string (date-time) | 예 | — |
items[].actor | string | 예 | — |
items[].comment | string | 예 | 1024자 이하; null일 수 있음 |
next | string | 예 | null일 수 있음 |
응답: 200, 400, 401, 403, 404, 409, 422, 503, 507
예제
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/stages" \
-H "Authorization: Bearer $ARKVORY_TOKEN"리포지토리 승격 저널 따라가기
GET HEAD /api/v1/repositories/{repository}/promotions
액세스: 리포지토리 권한: artifact.list; 파일 키: read · 재시도: 반복해도 안전함(읽기)
리포지토리의 모든 아티팩트에 대한 스테이지 및 승격 이벤트를 오래된 순으로 반환하며, CI/CD가 폴링하는 용도입니다. 이벤트는 스테이지 추가 또는 제거, 다른 리포지토리로의 승격, 다른 리포지토리로부터의 수신입니다. 페이지는 limit개 이벤트(1–100, 기본 50)로 구성되며, 마지막 sequence를 저장해 두었다가 after에 next 값을 넣어 이어서 조회합니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
after | 쿼리 | string | 아니요 | 10진수 숫자로 쓴 정수이며 문자열로 전송 |
limit | 쿼리 | string | 아니요 | 10진수 숫자로 쓴 정수이며 문자열로 전송; At most 100. |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
items | object 배열 | 예 | 요소 100개 이하 |
items[].sequence | string | 예 | 10진수 숫자로 쓴 정수이며 문자열로 전송 |
items[].repository | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
items[].artifactId | string (uuid) | 예 | — |
items[].action | string | 예 | stage.added, stage.removed, promoted, received 중 하나 |
items[].stage | string | 예 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치; null일 수 있음 |
items[].mode | string | 예 | copy, move, null 중 하나; null일 수 있음 |
items[].peerRepository | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치; null일 수 있음 |
items[].peerArtifactId | string (uuid) | 예 | null일 수 있음 |
items[].actor | string | 예 | — |
items[].comment | string | 예 | 1024자 이하; null일 수 있음 |
items[].occurredAt | string (date-time) | 예 | — |
next | string | 예 | null일 수 있음 |
응답: 200, 400, 401, 403, 404, 409, 422, 503, 507
예제
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/promotions" \
-H "Authorization: Bearer $ARKVORY_TOKEN"패키지 버전 확인
GET HEAD /api/v1/repositories/{repository}/packages/resolve
액세스: 리포지토리 권한: package.read; 파일 키: read · 재시도: 반복해도 안전함(읽기)
downloadPackageContent와 같은 규칙으로 등록된 UPack 버전 하나를 선택해 바이트 없이 반환합니다. 응답에는 버전, 아티팩트 ID, SHA-256, 크기, 게시 시각, 현재 스테이지가 있습니다. name은 필수이고 group의 기본값은 루트 그룹이며, 정확한 version 또는 SemVer range로 선택하고 선택적으로 stage, prerelease=true, order=promoted(stage 필요)를 지정합니다. version과 range가 없으면 가장 높은 안정 버전입니다. 일치하는 항목이 없으면 404이며, 그 버전에 머무르려면 결과를 아티팩트 ID로 다운로드합니다.
매개 변수
| 이름 | 위치 | 형식 | 필수 | 규칙 |
|---|---|---|---|---|
repository | 경로 | string | 예 | ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치 |
group | 쿼리 | string | 아니요 | 128자 이하 |
name | 쿼리 | string | 예 | 1–128자 |
version | 쿼리 | string | 아니요 | 128자 이하; Exact version; excludes range. |
range | 쿼리 | string | 아니요 | 256자 이하; SemVer range: 1.2.3, ^1.2, ~1.2.3, 1.x, >=1.0.0 <2.0.0, a || b. |
stage | 쿼리 | string | 아니요 | ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치; Only versions promoted to this stage. |
prerelease | 쿼리 | string | 아니요 | true, false 중 하나; Include prereleases. |
order | 쿼리 | string | 아니요 | version, promoted 중 하나; promoted picks the most recently staged version and requires stage. |
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
group | string | 예 | — |
name | string | 예 | — |
version | string | 예 | — |
artifactId | string (uuid) | 예 | — |
sha256 | string | 예 | SHA-256: 소문자 16진수 64자리 |
size | string | 예 | 10진수 숫자로 쓴 정수이며 문자열로 전송 |
publishedAt | string (date-time) | 예 | — |
stagedAt | string (date-time) | 예 | null일 수 있음 |
stages | string 배열 | 예 | 요소 16개 이하; 중복 항목 없음; 각 요소: ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치 |
응답: 200, 400, 401, 403, 404, 409, 422, 503, 507
예제
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/packages/resolve?name=$NAME" \
-H "Authorization: Bearer $ARKVORY_TOKEN"