- 현재 팀에는
application-security.yaml이라는 민감정보 파일이 있습니다. - OAuth와 Jwt 에 대한 키값과 여러 민감정보들이 포함되어 있습니다.
- 프로젝트 기간동안 저희는 이 파일을 복사 붙여넣기 하고
.gitignore로 리모트에 푸쉬되지 않도록 설정하고 CI시에 젠킨스에서 ec2서버에 올라와있는 해당 파일을 복붙한 다음 빌드하도록 설정하였습니다.
- 이런 경우 문제가 파일이 변경되었을 때 항상 ec2서버에 접속하여 변경해줘야 한다는 문제점이 있으며 팀원간에 공유도 해야한다는 점이 문제입니다.
- 만약 서버가 여러대를 운영한다면 하나하나씩 바꿔줘야할겁니다
- 이를 해결하기 위해 git submodule를 사용해보았습니다.
- git submodule를 활용하면 private한 Githuib 저장소에 민감한 정보를 넣어두고, submodule의 레포 권한이 있는 사람만 민감 정보들을 가져올 수 있게 됩니다.
적용법

먼저 private 레포를 만들어야 하는 데 저희 dya-mond를 활용하여 만들어서 시큐리티 파일을 업로드 하였습니다.
이제 amabnb 프로젝트로 돌아와서 submodule를 등록해줍니다.


그럼 다음과 같이 .gitmodule파일 생성과 함께 submodule이 등록되어 클론되게 됩니다.
이후 실행이나 빌드시에 해당 파일을
resources 하위에 두기 위해 build.gradle를 수정해줍니다. 실행, 빌드시에 해당 폴더의 yaml파일이 resources 하위로 들어가게 됩니다.
여기서 주의해야할 점이 .gitignore로 해당 파일이 업로드 되지 않도록 지정합니다.
팀원들이 해야하는 작업
submodule를 사용하게 되면 팀원들이 해야 하는 작업이 있습니다.
- 서브 모듈을 초기화 이후 업데이트한 뒤 main으로 checkout 합니다.
- 이후 변경 사항이 있다면
git submodule update --remote --merge를 쳐주시면 됩니다.
CI/CD
깃헙 액션을 사용한다면 다음과 같이 submoudle를 가져올 수 있습니다.
주의점
- submoudle의 변경사항이 있다면 서브모듈 저장소를 먼저 커밋,푸쉬한 뒤 메인 프로젝트에서 커밋,푸쉬 해야합니다.
- 이를 해결하기 위해 서브모듈을 먼저 push하고 메인모듈을 push할 수 있도록 합니다 .
- 이후 팀원들은 다음과 같이 update 합니다.
