2.6 KiB
2.6 KiB
Pod Module New Workspace Scaffolder 설계
목표
기존 Pod Module Scaffold(PodScaffolder, /api/v1/scaffold/pod, 기존 화면)을 변경하지 않는다.
Scaffold 화면에 별도 Pod Module New 기능을 추가하여, 사용자가 입력한 Pod 모듈명을 기준으로 독립 Tool Pod 프로젝트를 C:\eGovFrameDev-4.3.1-64bit\workspace 아래에 생성한다.
생성 구조
dat-was-payment 입력 시 다음 독립 프로젝트를 생성한다.
C:\eGovFrameDev-4.3.1-64bit\workspace\dat-was-payment\
settings.gradle
build.gradle
README.md
Dockerfile
docker-compose.yml
k8s\
src\main\java\...
src\main\resources\...
입력 모듈명은 저장소 루트명, Gradle 루트 프로젝트명, Spring application name에 동일하게 사용한다.
생성 프로젝트는 ../dat-lib-datmt를 Gradle composite build로 포함하고, io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT 좌표를 :dat-was-lib로 치환한다.
새 생성 경로
- 신규
NewPodProjectScaffolder가 독립 프로젝트 파일을 생성한다. - 신규 Controller endpoint가 module name과 사용자가 입력한 서비스 포트를 전달한다.
- Scaffold 화면에는 기존 Pod Module 탭과 별개인
Pod Module New영역을 둔다. - workspace 경로는 사용자 입력값을 사용하며 기본값은
C:\eGovFrameDev-4.3.1-64bit\workspace이다. - 존재하는 프로젝트 경로에는 생성하지 않고 명확한 오류를 반환한다.
기존 기능 보호
다음 기존 파일과 동작은 변경하지 않는다.
PodScaffolder/api/v1/scaffold/pod- 기존 Pod Module 화면과 기존 Pod 모듈
생성 파일의 주요 설정
- Spring Boot 3.5.11, Java 21
- 공통 라이브러리 composite build 연결
server.port는 사용자가 입력한 서비스 포트를 기본값으로 사용하고, 환경변수PORT로 덮어쓸 수 있다.- Docker Compose 서비스명은 모듈명의
dat-was-접두사를was-로 치환한다. - Tool manifest는 새 Pod의 라우팅 함수만 포함한다.
- README는 공통 라이브러리 위치, 실행 방법, 입력 포트 설정을 안내한다.
검증
- 신규 Scaffolder 단위 테스트로 생성 파일, composite build 설정, 기존 경로 거부를 검증한다.
- Controller 테스트로 신규 endpoint의 정상 생성과 중복 경로 오류를 검증한다.
- 임시 workspace에 생성한 Pod의
compileJava를 실행해../dat-lib-datmt의존성 해석을 확인한다. - 기존
PodScaffolder관련 테스트를 실행해 기존 생성 경로가 바뀌지 않았음을 확인한다.