깃 서브모듈로 스프링 부트 구성 파일 관리하기

HOSEON YOO·2024년 3월 1일
0

개요

  • Spring Boot v3.2.4
  • Git v2.43.0

국비학원에서 최종 프로젝트를 진행하면서 깃허브로 소스 코드를 관리했다. 퍼블릭 리포지토리였기때문에 스프링 부트 구성 파일에 민감한 정보들을 어떻게 숨기는 것이 나을지에 대해 고민을 했었다. 고민해본 내용은 아래와 같다.

  1. 스프링 부트 구성 파일을 클라우드로 관리
  2. 깃 서브모듈로 깃허브 프라이빗 리포지토리로 관리

결론적으로 깃 서브모듈을 사용해서 스프링 부트 구성 파일을 관리했다. 깃 서브모듈을 사용한 이유는 깃허브로 프로젝트의 모든 소스 코드들을 관리할 수 있다면 좀 더 편할 것 같다고 생각했기 때문이다.

깃 서브모듈이란?

깃 서브모듈은 상위 리포지토리에 하위 리포지토리를 포함시키는 것이다.

깃 서브모듈 생성하기

  1. 깃허브 퍼블릭 리포지토리 생성(스프링 부트 프로젝트)
  2. 깃허브 프라이빗 리포지토리 생성(스프링 부트 구성 파일)
  3. 깃허브 퍼블릭 리포지토리 내 PC에 Clone
  4. 깃 서브모듈 생성
git submodule add <깃허브 프라이빗 리포지토리 주소>

깃허브 프라이빗 리포지토리에 아무 파일도 없다면 폴더만 생성될 것이다. 이럴 때는 .gitmodules 파일을 생성해준다.

.gitmodules

[submodule "test-submodule"]
	path = test-submodule
	url = https://github.com/hsyoodev/test-submodule.git
	branch = main

그러면 아래와 같은 프로젝트 구조가된다.

깃 서브모듈로 스프링 부트 구성 파일 숨기기

  1. 스프링 부트 구성 파일을 깃 서브모듈 폴더로 이동
  2. 개발할 때는 Gradle로 스프링 부트 구성 파일을 복사
    task copySubmodule(type: Copy) {
        copy {
            from "test-submodule"
            include "application*.yaml"
            into "src/main/resources"
        }
     }
  3. 프로젝트 구조

깃허브 퍼블릭 리포지토리 Clone

처음에 깃허브 퍼블릭 리포지토리를 Clone하면 서브모듈의 데이터가 같이 오지 않는다. 이를 해결하기 위한 두 가지 방법이 있는데 2번 방법이 가장 편하므로 필자는 2번을 많이 사용한다.

  1. git clone <깃허브 퍼블릭 리포지토리>
    1.1 git submodule update
  2. git clone --recursive <깃허브 퍼블릭 리포지토리>

깃 서브모듈 삭제

깃 서브모듈은 폴더만 삭제해서는 완전히 지워지지 않는다. 그래서 아래와 같은 순서로 삭제해야 한다.

  1. rm -rf <깃 서브모듈 폴더>
  2. rm -rf .gitmodules
  3. rm -rf .git/modules/<깃 서브모듈 폴더>
  4. git rm -cached .gitmodules
  5. git rm -cached <깃 서브모듈 폴더>

참고자료

profile
안녕하세요~ 👋, 대한민국 개발자 유호선입니다.

0개의 댓글

관련 채용 정보