국비학원에서 최종 프로젝트를 진행하면서 깃허브로 소스 코드를 관리했다. 퍼블릭 리포지토리였기때문에 스프링 부트 구성 파일에 민감한 정보들을 어떻게 숨기는 것이 나을지에 대해 고민을 했었다. 고민해본 내용은 아래와 같다.
결론적으로 깃 서브모듈을 사용해서 스프링 부트 구성 파일을 관리했다. 깃 서브모듈을 사용한 이유는 깃허브로 프로젝트의 모든 소스 코드들을 관리할 수 있다면 좀 더 편할 것 같다고 생각했기 때문이다.
깃 서브모듈은 상위 리포지토리에 하위 리포지토리를 포함시키는 것이다.
git submodule add <깃허브 프라이빗 리포지토리 주소>
깃허브 프라이빗 리포지토리에 아무 파일도 없다면 폴더만 생성될 것이다. 이럴 때는 .gitmodules 파일을 생성해준다.
.gitmodules
[submodule "test-submodule"]
path = test-submodule
url = https://github.com/hsyoodev/test-submodule.git
branch = main
그러면 아래와 같은 프로젝트 구조가된다.
task copySubmodule(type: Copy) {
copy {
from "test-submodule"
include "application*.yaml"
into "src/main/resources"
}
}
처음에 깃허브 퍼블릭 리포지토리를 Clone하면 서브모듈의 데이터가 같이 오지 않는다. 이를 해결하기 위한 두 가지 방법이 있는데 2번 방법이 가장 편하므로 필자는 2번을 많이 사용한다.
git clone <깃허브 퍼블릭 리포지토리>
git submodule update
git clone --recursive <깃허브 퍼블릭 리포지토리>
깃 서브모듈은 폴더만 삭제해서는 완전히 지워지지 않는다. 그래서 아래와 같은 순서로 삭제해야 한다.
rm -rf <깃 서브모듈 폴더>
rm -rf .gitmodules
rm -rf .git/modules/<깃 서브모듈 폴더>
git rm -cached .gitmodules
git rm -cached <깃 서브모듈 폴더>