0. 개요
프로젝트를 진행하는데, application.yml 파일을 관리를 어떻게 해야할지 고민이 되었습니다.
프로젝트 repo가 public이여서 원격 저장소에 설정파일을 올릴 순 없고, 매번 yml파일을 어딘가 저장해놨다가 불어와서 쓰기에는 번거롭고 형상관리에 문제점이 많았습니다.
github secret으로 관리할경우 히스토리 관리가 전혀 되지가 않았고,
별도로 설정값을 저장해서 불러오는 API서버나 DB를 운용하기엔 시간과 노력이 너무 많이 들어가게 되는것 같았습니다.
그래서, 프로젝트 repo에 하위 repo를 등록해 사용하는 git submodule을 사용해보게 되었습니다.
1. submodule 사용시 장점
- 매우 간단하다.
프로젝트에 서브모듈을 등록하고, 최신화는 깃 명령어 한줄씩만 입력하면 됩니다. - 히스토리 파악이 용이하다.
커밋내역이 남기 때문에 히스토리 파악이 용이합니다. - 충돌관리가 가능해 협업시 매우 유용하다.
깃을 사용한 충돌관리가 가능합니다. 설정파일은 다수가 작업할 확률이 큰 만큼 매우 큰 장점입니다. - 별도로 서버를 구축하거나 DB를 관리할 필요가 없다.
2. git submodule 사용법
2-1. private repo 생성
application.yml과 같은 설정파일을 저장할 private repo를 github에 생성하고, 관리할 파일을 push 해둡니다.
2-2. project repo에 서브모듈 등록
등록은 어렵지 않습니다. 서브모듈을 등록할 project dir에서 아래의 git 명령어를 사용해주면 됩니다.
git submodule add [서브 모듈로 등록할 github repository의 주소]
등록 후에 프로젝트를 clone하거나 feach를 하면 아래와 같이 project dir에 서브모듈로 등록한 repo의 dir가 생성됩니다.
2-3. build.gradle 편집
빌드시에 등록해둔 submodule을 알맞은 경로에 위치시킬 수 있도록 build.gradle을 아래와 같이 편집해 줍니다.
task copyPrivate(type: Copy) {
copy {
from './[서브모듈 repo 이름]'
include "*.yml"
into 'src/main/resources'
}
}
빌드하기 전, project dir의 서브모듈 dir에 있는 yml파일을 resources폴더 하위에 복사하는 groovy 블록입니다.
2-4. 등록한 submodule 최신화
만약 application.yml파일이 변경되거나 했다면 아래의 명령어를 통해 feach를 받을 수 있습니다.
git submodule update --remote
이렇게 설정해 두면, 별도의 서버나 DB도 필요가 없고 자동배포시에도 submoudle 명령어만 스크립트에 잘 작성해 두신다면 별도의 설정 없이도 편리하게 사용할 수 있습니다!!
'VCS' 카테고리의 다른 글
Github Action으로 CI/CD 구축하기 (0) | 2023.06.07 |
---|---|
You've added another git repository inside your current repository. (0) | 2022.03.30 |
[Git] 실수로 삭제한 Local/Remote Branch 복구하기 (0) | 2022.01.31 |