HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
👼
[팀2] 극락이들
/
📰
[극락이들] 3주차 프로젝트 공유사항
/
🚌
CI CD 과정 Private Properties 설정
🚌

CI CD 과정 Private Properties 설정

생성자
우선순위
1순위
태그
Backend
💚해결 완료
조수연
조수연
최민석
최민석
김동건
김동건
남명훈
남명훈
이소진
이소진
황일용
황일용
완료
Yes
Warnning. Do not try this at home.
Warnning. Do not try this at home.

개요

CICD과정 중 Spring Boot에 필요한 Properties를 private하게 설정을 해야한다.

문제점

  • BackEnd Repository는 Public 으로 설정되어 있어, database url, password 등 민감 정보 등을 포함해선 안된다.
  • Spring Boot에 대해 build 과정 중 properties가 설정되어야 한다.
 

해결방법

  1. AWS KMS를 사용하여 데이터베이스 정보를 암호화하는 방식
  1. Github 별도의 private repository를 활용하여 서브모듈을 활용
  1. Github Environment 사용
  1. 환경변수를 build과정에서 주입하는방법
 

👎🏻 CASE1 : AWS KMS를 사용하여 데이터베이스 정보를 암호화하는 방식

  • 암호화 키는 엄격한 액세스 제어를 통해 안전하게 저장해야 합니다. 예를 들어 AWS KMS와 같은 키 관리 서비스를 사용할 수 있습니다. 데이터 분류 수준 및 분리 요구 사항에 맞추어, AWS IAM 및 리소스 정책과 함께 키에 대한 액세스 제어 기능과 여러 키를 사용하는 것이 좋습니다.
  • 하지만 너무 해비하고 설정과정이 매우 복잡해지고 키-Value 수정/추가 작업 등 유지보수성이 떨어진다.

✅ CASE2: Github 별도의 private repository를 활용하여 서브모듈을 활용

Git 의 서브모듈(Submodule)
Git 의 서브모듈(Submodule) 이란 하나의 저장소 안에 있는 또 다른 별개의 저장소이다. 보통 다른 원격 저장소를 가져와(pull) 서브모듈로 사용하게 된다. 본 포스트에서는 Git 의 서브모듈에 대해 알아본다. myblog 라는 프로젝트 디렉터리에서 블로그 를 개발하다가, chat-module 이라는 채팅 모듈 을 원격 저장소에서 가져와 블로그 프로젝트에서 사용하고 싶다고 가정하자.
Git 의 서브모듈(Submodule)
https://sgc109.github.io/2020/07/16/git-submodule/
Git 의 서브모듈(Submodule)
git submodule로 프로젝트마다 공통 파일 추가하기
서로 분리된 프로젝트 A, B, C가 있고, 각각의 프로젝트는 거의 동일한 환경설정 과정을 거치도록 되어있는 상황을 가정해보자. 그리고 이 환경설정을 실행하는 과정이 몇개의 쉘 스크립트 파일을 실행하는 것으로 완료할 수 있다면? 이 환경설정을 실행하는 스크립트 파일과 기타 공통 파일을 하나의 github 저장소(혹은 그 외 여러가지 원격 git 저장소)를 ...
git submodule로 프로젝트마다 공통 파일 추가하기
https://bonoogi.postype.com/post/8513988
git submodule로 프로젝트마다 공통 파일 추가하기
  • github submodule이란, Git 저장소 안에 다른 git 저장소를 디렉토리로 분리해 넣는 것이 서브모듈이다. 다른 독립된 Git 저장소를 Clone해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다.
  • 환경설정 저장소를 프로젝트 저장소에 붙여주기
$ git submodule add https://github.com/jung-dam-diary/secret-keys.git # 그 안에 서브모듈 파일이 클론된다. # project 디렉토리엔 Git 저장소들을 관리하는 .gitmodules라는 이름의 파일이 생긴다.
# .gitmodule [submodule "secret-keys"] path = # url = https://github.com/jung-dam-diary/secret-keys.git
  • 부모 저장소(spring)에서 submodule(secret-keys)인 application.yml 파일을 수정했을 때 submodule repo에도 반영을 원한다면?
$ git submodule update --remote --merge
  • submodule을 가져오고 싶다면?
$ git submodule update [--remote 서브모듈이름]
  • branch별 배포환경 설정하는 submodule 기본 브랜치 설정하기
# .gitmodule [submodule "secret-keys"] path = src/main/resources/secret-keys url = https://github.com/랄랄라/secret-keys.git branch = develop
  • 타른팀원이 clone 하고 submodule까지 받는방법!
# 방법1 $ git clone original_repository $ git submodule init $ git submodule update # 방법2 $ git clone --recurse-submodules original_repository