Skip to content

[Distribution] Core와 token-pilot-starter 0.1.0 동일 버전 배포 구성 #41

Description

@HuitaePark

목적

사용자가 TokenPilot을 두 가지 진입점으로 선택할 수 있도록 token-pilot-coretoken-pilot-starter를 동일한 0.1.0 release candidate로 조립한다.

  • Core 경로: Spring 없이 preflight와 도메인 API만 사용
  • Starter 경로: Spring Boot/Spring AI 연동 module을 편리하게 구성

여기서 Starter의 실제 artifact 이름은 token-pilot-starter다. 아직 존재하지 않는 token-pilot-spring-ai-starter를 문서나 배포 좌표로 만들지 않는다.

현재 코드 근거

  • 기본 project version은 0.0.1-SNAPSHOT이다.
  • token-pilot-core에는 runtime dependency가 없다.
  • token-pilot-starter는 autoconfigure와 연동 module을 한 진입점으로 노출한다.
  • 루트에 Maven Publish/JReleaser 설정이 있지만 외부 사용자가 소비할 0.1.0 artifact 세트를 검증한 상태는 아니다.

배포 계약

  • 모든 public module은 하나의 release version을 사용한다.
  • Core consumer는 Spring Framework, Spring Boot, Spring AI와 Micrometer 없이 해석되어야 한다.
  • Starter consumer는 필요한 TokenPilot 연동 module을 전이적으로 받되 특정 LLM provider SDK나 API key를 강제하지 않는다.
  • 각 artifact에는 binary JAR, sources JAR, Javadoc JAR과 올바른 POM이 생성되어야 한다.
  • release signing/credential은 환경 변수 또는 CI secret으로만 주입하고 저장소에 넣지 않는다.

구현 범위

  • 0.1.0 release version을 한 곳에서 관리
  • publication 대상 public module과 제외 대상 sample/benchmark module 명시
  • Maven-compatible staging repository에 전체 artifact 생성
  • Core와 Starter dependency graph 검증
  • JReleaser 또는 동등 release task의 dry-run/staging 검증
  • #29에서 정한 라이선스, SCM과 developer metadata 적용
  • release용 명령과 필요한 환경 변수를 문서화

검증 시나리오

  • clean checkout에서 0.1.0 artifact를 staging repository에 생성할 수 있다.
  • Core POM의 runtime graph에 Spring/Spring AI가 없다.
  • Starter POM이 필요한 TokenPilot module을 동일 버전으로 참조한다.
  • Starter가 특정 OpenAI/Anthropic 등 provider 구현을 강제하지 않는다.
  • binary/sources/Javadoc/POM이 빠짐없이 생성된다.
  • secret이 없는 CI에서도 build와 publication dry-run 검증이 가능하다.
  • signing이 필요한 실제 release 경로는 secret 누락 시 명확히 실패한다.

Acceptance criteria

  • token-pilot-core:0.1.0token-pilot-starter:0.1.0을 동일 staging repository에서 해석할 수 있다.
  • 모든 public module의 버전과 POM 내부 module 참조 버전이 일치한다.
  • Core의 framework-independent 경계가 artifact 수준에서도 유지된다.
  • Starter의 전이 의존성이 의도한 module 경계와 일치한다.
  • release procedure가 재현 가능한 명령으로 문서화된다.
  • 실제 Maven Central 공개 완료로 오해할 표현을 사용하지 않는다.

제외 범위

의존관계와 순서

#29 완료 후 진행하며 #42의 선행 이슈다. #43은 확정된 artifact 좌표를 이 이슈에서 받아 사용한다.

Source

P0 compatibility와 publication gate — #47

  • #47에서 확정한 최소 JDK, target bytecode와 단일 Spring Boot/Spring AI 조합을 그대로 사용한다.
  • Core runtime graph뿐 아니라 generated POM과 Gradle module metadata에도 Spring AI, Spring Boot, Micrometer, Reactor 및 Spring BOM import가 없어야 한다.
  • Core와 Starter artifact의 target bytecode가 문서화된 최소 JDK를 초과하지 않는지 검사한다.
  • release candidate 생성은 #47과 #29가 모두 완료된 뒤 진행한다.
  • Maven Central namespace cloud.token-pilot의 소유권/검증 상태를 실제 release 전 gate로 확인한다. credential이나 namespace 준비가 안 된 경우 staging artifact 검증까지만 완료하고 공개 배포 완료로 표현하지 않는다.

추가 완료 조건:

  • #47의 선택 matrix와 publication version이 일치한다.
  • Core generated POM/module metadata에 framework BOM이 없다.
  • 공개 artifact bytecode가 최소 지원 JDK에서 load된다.
  • Central namespace 검증 여부와 release cutline이 문서화된다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestmvpTokenPilot 0.1.0 MVP scope

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions