Marketplace · Publisher
퍼블리셔 대시보드 & lvis-publish CLI
PublisherDashboard / PublishPage 가 패키지 업로드를 관리. CLI lvis-publish 도 같은 endpoint 사용. 모든 업로드는 Ed25519 서명 envelope 으로 보호되며 admin pending 큐에 들어갑니다.
POST /plugins/{slug}/versions
Ed25519 multi-sig
@lvis-marketplace/cli
업로드 흐름
- 01
lvis-publish login / status
CLICLI 로 ApiKey 등록 (role=publisher). 키는 sha256 hash 로 서버
api_keys.key_hash에 저장. - 02
lvis-publish publish <zip>
로컬 plugin 디렉토리를 zip 으로 패키징.
cli/src/commands/publish.ts가POST /api/v1/plugins/{slug}/versions호출 (server/src/lvis_marketplace/api/publisher.py:126). - 03
Ed25519 서명
sigpublisher private key 로 패키지 서명. 서버는 알려진 public key 와 매칭되는 서명이 최소 1개 있어야 통과 (
signing.py:178 sign_artifact_multi,:219 verify_artifact). - 04
Pending review
서명 통과 후 admin
/api/v1/publishes/pending큐에 들어감. 사용자에게는 아직 노출되지 않음. - 05
Admin 승인
공개admin이
POST /publishes/{publish_id}/approve호출 → 카탈로그에 노출 + 다운로드 가능.
CLI 명령 (실제 구현)
lvis-publish login # ApiKey 등록
lvis-publish logout
lvis-publish status
lvis-publish list # 내가 올린 패키지
lvis-publish show <slug> # 단일 패키지 상세
lvis-publish publish <zip> # 새 버전 업로드
lvis-publish yank <slug> <ver> # 버전 yank (admin 필요)
lvis-publish approve [id] # admin 권한
lvis-publish reject <id> # admin 권한버전 정책 — SemVer + immutable
업로드된 PluginVersion 은 immutable. 같은 (slug, version) 재업로드는 거절. 문제 발생 시 새 버전 + yank 또는 admin rollback 만 사용.