Closed jobum97 closed 1 year ago
yaml 파일로 템플릿 내용 관리
app-config.yaml 파일에 추가할 템플릿 내용 추가 내용에 맞는 경로에 template 파일 추가시 템플릿 추가되는 모습 확인
gitlab plugin 적용 후 레포지토리 생성할 수 있는 Host (github, gitlab...etc)이 늘어난 모습
현재 환경설정 신기술 쪽 주관으로 만든 F/W (core, batch-core) F/W 가 전문 파싱이나, Redis 나 뭔가 공통적인 기능들을 구현해주고 + 디펜던시들도 주입해 core개발쪽에서 이걸로 개발을 할때 위의 F/W 주입을 받아 추가적으로 필요한 것들은 Nexus에서 주입해서 쓴다.
back/front => 어떤 기술 스택을 쓸것인지? => 버전 =>
ref ) spring io init https://start.spring.io/
spring boot grpc backstage template https://github.dev/backstage/software-templates/blob/main/scaffolder-templates/springboot-grpc-template/template.yaml
현재 환경설정 신기술 쪽 주관으로 만든 F/W (core, batch-core) F/W 가 전문 파싱이나, Redis 나 뭔가 공통적인 기능들을 구현해주고 + 디펜던시들도 주입해 core개발쪽에서 이걸로 개발을 할때 위의 F/W 주입을 받아 추가적으로 필요한 것들은 Nexus에서 주입해서 쓴다.
컴포넌트 세팅에서 프레임워크나 라이브러리를 선택할 수 있게 할 수 있을까? start.spring.io처럼
브랜치는 feature/{camelNaming} 으로 따는게 어떨까요?
현재 환경설정 신기술 쪽 주관으로 만든 F/W (core, batch-core) F/W 가 전문 파싱이나, Redis 나 뭔가 공통적인 기능들을 구현해주고 + 디펜던시들도 주입해 core개발쪽에서 이걸로 개발을 할때 위의 F/W 주입을 받아 추가적으로 필요한 것들은 Nexus에서 주입해서 쓴다.
컴포넌트 세팅에서 프레임워크나 라이브러리를 선택할 수 있게 할 수 있을까? start.spring.io처럼
이를 목표로 실현 가능한지 알아보겠습니다!
템플릿 수정 기능 - yaml 파일 동적으로 생성하는 기능 필요 템플릿 선택 인자 => yaml 파일에 넣기 선택 인자로 Nexus? 에서 소스 들고와서 하나의 프로젝트로 설정해주는 부분 필요 Nexus 플러그인 존재X 고로 이 부분에 대한 플러그인 개발 필요 혹은 우회 방법 필요
Spring 세팅시 프로젝트 구조, gradle, docker file 을 세팅하여 spring 최초 세팅을 쉽게 진행 이때 템플릿에서 선택한 인자들로 어떻게 이를 설정할 것인가? => action을 설정하면 될 것 같음
gitlab, Jenkins, argoCd 연결은 플러그인 존재 => 내부에 맞게 조금만 건들면 될 것으로 예상
템플릿 수정 기능 - yaml 파일 동적으로 생성하는 기능 필요 템플릿 선택 인자 => yaml 파일에 넣기 선택 인자로 Nexus? 에서 소스 들고와서 하나의 프로젝트로 설정해주는 부분 필요 Nexus 플러그인 존재X 고로 이 부분에 대한 플러그인 개발 필요 혹은 우회 방법 필요
Spring 세팅시 프로젝트 구조, gradle, docker file 을 세팅하여 spring 최초 세팅을 쉽게 진행 이때 템플릿에서 선택한 인자들로 어떻게 이를 설정할 것인가? => action을 설정하면 될 것 같음
템플릿에서 spring boot로 구성을 시작할 때, 추가하는 라이브러리를 검색해서 추가할 수 있을까??? like start.spring.io
템플릿 수정 기능 - yaml 파일 동적으로 생성하는 기능 필요 템플릿 선택 인자 => yaml 파일에 넣기 선택 인자로 Nexus? 에서 소스 들고와서 하나의 프로젝트로 설정해주는 부분 필요 Nexus 플러그인 존재X 고로 이 부분에 대한 플러그인 개발 필요 혹은 우회 방법 필요 Spring 세팅시 프로젝트 구조, gradle, docker file 을 세팅하여 spring 최초 세팅을 쉽게 진행 이때 템플릿에서 선택한 인자들로 어떻게 이를 설정할 것인가? => action을 설정하면 될 것 같음
템플릿에서 spring boot로 구성을 시작할 때, 추가하는 라이브러리를 검색해서 추가할 수 있을까??? like start.spring.io
현재 스켈레톤 코드로 한번에 말아서 올리는 것은 되는 것을 확인했는데,... (= 템플릿을 정의해둔 것을 그대로 만들어 주는 것, 기존의 깃랩 등에서 정리되어 있는 누군가의 레포지토리 복사해오는 방식과 유사) start.spring.io 처럼 필요한 라이브러리를 하나하나 고르는 것에 대한 부분은 어떻게 해야할지 파악 못하고 있습니다
템플릿 수정 기능 - yaml 파일 동적으로 생성하는 기능 필요 템플릿 선택 인자 => yaml 파일에 넣기 선택 인자로 Nexus? 에서 소스 들고와서 하나의 프로젝트로 설정해주는 부분 필요 Nexus 플러그인 존재X 고로 이 부분에 대한 플러그인 개발 필요 혹은 우회 방법 필요 Spring 세팅시 프로젝트 구조, gradle, docker file 을 세팅하여 spring 최초 세팅을 쉽게 진행 이때 템플릿에서 선택한 인자들로 어떻게 이를 설정할 것인가? => action을 설정하면 될 것 같음
템플릿에서 spring boot로 구성을 시작할 때, 추가하는 라이브러리를 검색해서 추가할 수 있을까??? like start.spring.io
현재 스켈레톤 코드로 한번에 말아서 올리는 것은 되는 것을 확인했는데,... (= 템플릿을 정의해둔 것을 그대로 만들어 주는 것, 기존의 깃랩 등에서 정리되어 있는 누군가의 레포지토리 복사해오는 방식과 유사) start.spring.io 처럼 필요한 라이브러리를 하나하나 고르는 것에 대한 부분은 어떻게 해야할지 파악 못하고 있습니다
ref) https://engineering.premise.com/dynamic-data-on-backstage-templates-ad8a0ae316e1 additional - https://roadie.io/docs/scaffolder/writing-templates/
사내에서 시작하는 프로젝트는 기본 템플릿을 몇개 지정할 필요 있음. 너무 자유도를 주면 오히려 안쓰게 될지도?
<Route path="/create" element={<ScaffolderPage />}>
<ScaffolderFieldExtensions>
<DynamicPickFieldExtension />
</ScaffolderFieldExtensions>
</Route>
사용법은 ui:field를 그대로 사용하면 되는데 dummy json 을 사용하여 category를 선택할 수 있도록 template.yaml 파일 Properties에 추가하면
- title: Choose a Category
required:
- category
properties:
category:
title: Category
type: string
ui:field: DynamicPickExtension
ui:options:
external_data: https://dummyjson.com/products/categories
문제 없이 사용할 수 있다
각 관리자에서 라이브러리 관리 화면 => backstage DB에 템플릿 관련 정보 저장 => 이를 유저가 사용?
template 을 통해 어떤 input 값을 받을지 설정 backstage에서 input 값 입력하면 skeleton 소스들에 input 값을 넣어주어 패키지 생성하는 방식으로 작동
spring.io 프로젝트 에서는 어떻게 gradle이나 maven 파일을 만들어주는지 참고해보고자 함
spring.io 프로젝트 에서는 어떻게 gradle이나 maven 파일을 만들어주는지 참고해보고자 함
spring.io/start.spring.io 프론트에서 설정값 받고 spring.io/initializr 에서 넘겨받아 meta-data, dependency 등 각각 처리하며 file write를 해서 직접 하나씩 조립해서 만드는 방식으로 파악
dependency write 하는 부분 이러한 메소드를 입력받는 디펜던시 리스트를 반복문으로 돌면서 처리
GradleBuildWriter.java GradleBuildWriter.java의 구현체 중 하나 GroovyDslGradleBuildWriter.java
조사하면서 든 생각으로는 dependency를 spring.io 에서 하듯이 하나하나 설정해주는 기능이 들어가려면 spring.io 처럼 프로젝트의 유형 (spring의 경우 gradle, maven, java,kotlin 등...)에 따라 맞춰서 파일들을 write 하는 방식으로 가야하지 않을까 싶은데... 그러면 공수가 너무나 커지지 않을까 라는 우려가 듬
기본적인 dependency의 경우 템플릿을 관리할 때 어떤 dependency를 넣고 어떤 버전을 사용할지 같이 관리하여 진행하면 기존의 skeleton 코드에 input값을 넣어 프로젝트 세팅해줄 수 있을 것이라 생각함
프레임워크 및 공통 라이브러리 관리 프로세스를 생각해보면
그러므로 프레임워크나 공통 라이브러리를 등록하는 템플릿에서 gradle / maven 등에 주입할 수있는 groupid/artifactid/version 등을 정확히 기입할 수 있도록 템플릿을 제공할 필요 있음
또한 등록할 때 해당 프레임워크/라이브러리에 대한 간략한 설명을 넣도록 하여 다른 템플릿에서 설명이 자동으로 보일 수 있도록 하면 좋을것
현재 생각하고 있는 flow 입니다! 의견있으시면 달아주세요! @hellices @seowjin1060 @dev-shin @YOOMYE89 @wijihoon
신규 이슈 생성
컴포넌트 화면 개발
Manage
@hellices @jobum97 검토해주신 이후에 이 이슈는 닫도록 하겠습니다 : )
신규 이슈 생성
컴포넌트 화면 개발
- feat: software catalog sample 추가 #75 software catalog sample 추가
- [신규] Dependency 선택란 개발 (UI)
- feat: backstage action으로 동적 Gradle, Maven 파일 설정 #58 Dependency 선택란 개발 (API)
- feat: 사용자 관리 기능 추가 #61 feat: 권한 관리 기능 추가 #62 SSO, 사용자 권한 등록하기
Manage
- [신규] Catalog Entity 정리
- feat: Plugin 예제 생성 #71 Gitlab gradle hook 연동 (plugin 예제)
- [신규] 알림을 위한 그룹웨어 연동
@hellices @jobum97 검토해주신 이후에 이 이슈는 닫도록 하겠습니다 : )
좋다고 생각합니다
Description
backstage에서 프로젝트 initialize할 때 컴포넌트(프레임워크, 라이브러리, 디비, 플랫폼 등등)들을 어떻게 조합시켜줄지에 대한 설계
Ex) Spring boot x.xx 버전 + lombok, tomcat 등 라이브러리 + postgreSql + gitLab 등... 으로 유저가 설정시 설정한 컴포넌트들을 조합하여 하나의 프로젝트로 initialize