跳到正文

阶段与晋级 ​

制品的阶段(例如 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[].artifactIdstring (uuid)是—
items[].stagestring是匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$
items[].promotedAtstring (date-time)是—
items[].actorstring是—
items[].commentstring是最多 1024 个字符; 可以为 null

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
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 个小写字母、数字或 _.-,以字母或数字开头)标记已发布的制品,可附带最长 1024 个字符的 comment,并把该事件记录到晋级日志中。添加制品已有的阶段不会产生任何变化,并保留原来的时间,因此若要再次晋级同一个版本(例如用 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)

字段类型必需规则
commentstring否最多 1024 个字符; 可以为 null

响应 200

字段类型必需规则
artifactIdstring (uuid)是—
stagestring是匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$
promotedAtstring (date-time)是—
actorstring是—
commentstring是最多 1024 个字符; 可以为 null

响应: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

示例

bash
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

示例

bash
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否用十进制数字表示的整数,以字符串形式发送
limit查询string否用十进制数字表示的整数,以字符串形式发送; At most 100.

响应 200

字段类型必需规则
items数组(object)是最多 100 项
items[].sequencestring是用十进制数字表示的整数,以字符串形式发送
items[].repositorystring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$
items[].artifactIdstring (uuid)是—
items[].actionstring是取值之一:stage.added, stage.removed, promoted, received
items[].stagestring是匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$; 可以为 null
items[].modestring是取值之一:copy, move, null; 可以为 null
items[].peerRepositorystring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$; 可以为 null
items[].peerArtifactIdstring (uuid)是可以为 null
items[].actorstring是—
items[].commentstring是最多 1024 个字符; 可以为 null
items[].occurredAtstring (date-time)是—
nextstring是可以为 null

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
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)

字段类型必需规则
targetstring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$
modestring否取值之一:copy, move
stages数组(string)否最多 16 项; 不允许重复项; 每项:匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$
commentstring否最多 1024 个字符; 可以为 null

响应 200

字段类型必需规则
repositorystring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$
artifactIdstring (uuid)是—
sourceRepositorystring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$
sourceArtifactIdstring (uuid)是—
modestring是取值之一:copy, move
createdboolean是—
stages数组(string)是最多 16 项; 不允许重复项; 每项:匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$

响应: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

示例

bash
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 中的制品(1–100 个以逗号分隔的 ID,例如用于一次显示一页包的阶段)。每页包含 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否用十进制数字表示的整数,以字符串形式发送; At most 100.
ids查询string否最多 3699 个字符; Up to 100 comma-separated artifact ids.

响应 200

字段类型必需规则
items数组(object)是最多 100 项
items[].artifactIdstring (uuid)是—
items[].stagestring是匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$
items[].promotedAtstring (date-time)是—
items[].actorstring是—
items[].commentstring是最多 1024 个字符; 可以为 null
nextstring是可以为 null

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
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否用十进制数字表示的整数,以字符串形式发送
limit查询string否用十进制数字表示的整数,以字符串形式发送; At most 100.

响应 200

字段类型必需规则
items数组(object)是最多 100 项
items[].sequencestring是用十进制数字表示的整数,以字符串形式发送
items[].repositorystring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$
items[].artifactIdstring (uuid)是—
items[].actionstring是取值之一:stage.added, stage.removed, promoted, received
items[].stagestring是匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$; 可以为 null
items[].modestring是取值之一:copy, move, null; 可以为 null
items[].peerRepositorystring是匹配 ^[a-z0-9][a-z0-9_-]{0,63}$; 可以为 null
items[].peerArtifactIdstring (uuid)是可以为 null
items[].actorstring是—
items[].commentstring是最多 1024 个字符; 可以为 null
items[].occurredAtstring (date-time)是—
nextstring是可以为 null

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
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

字段类型必需规则
groupstring是—
namestring是—
versionstring是—
artifactIdstring (uuid)是—
sha256string是SHA-256:64 位小写十六进制数字
sizestring是用十进制数字表示的整数,以字符串形式发送
publishedAtstring (date-time)是—
stagedAtstring (date-time)是可以为 null
stages数组(string)是最多 16 项; 不允许重复项; 每项:匹配 ^[a-z0-9][a-z0-9_.-]{0,31}$

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/packages/resolve?name=$NAME" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Arkvory · ProAnimaStudio