[GitHub] submodule ์ฌ์ฉํด์ yml๊ณผ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด ์จ๊ธฐ๊ธฐ
์๋ก
๋ณดํต ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ฉด GitHub ์์์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ง ์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ด ์์ต๋๋ค. Spring Boot๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ DB์ ๊ณ์ ๋ฑ์ ๋ด์ .ymlํ์ผ๋ค์ ์๋ก ๋ค ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ฒด๋ฅผ private๋ก ์ค์ ํด์ ๋
ธ์ถ์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง submodule์ ์ฌ์ฉํ๋ฉด ํน์ ํด๋๋ง private๋ก ์ค์ ํด์ ๋
ธ์ถ์ ๋ง์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ฒ ๊ฒ์๊ธ์์๋ git submodule์ ๋ํด์ ์์๋ณด๊ณ , Spring Boot ํ๊ฒฝ์์ ymlํ์ผ๋ค์ ์จ๊ฒจ๋ณด๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
๊ตฌ์ฒด์ ์ธ ๊ณผ์
1. public repository ์์ฑ
๋จผ์ ์์ ๊ฐ์ด public repository๋ฅผ ๋ง๋ญ๋๋ค. ์ ๋ ๊ธฐ์ด์ ์ธ spring boot ํ๋ก์ ํธ๋ฅผ ํ๋ ์์ฑํ์ต๋๋ค.
๊ธฐ์กด์๋ ์์ ๊ฐ์ด submodule-test/src/main/resources ๊ฒฝ๋ก์ application.yml ํ์ผ์ด ์กด์ฌํฉ๋๋ค. ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ์ด ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ด๊ธด yml ํ์ผ๋ค์ public repository์์ ์จ๊ธฐ๋๋ผ๋ ํ๋ก์ ํธ๋ ์ ์์ ์ผ๋ก ์ํ๋๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ public repository์ application.ymlํ์ผ์ ์ญ์ ํด ์ค๋๋ค.
2. ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ด์ private repository ์์ฑ
๋ค์์ผ๋ก yml ํ์ผ๋ค์ ๋ด์ private repository๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ ํ ํ๋ก์ ํธ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ด๊ธธ application.yml ํ์ผ์ priavate respotitory์ ์์ฑํ์ฌ ์ถ๊ฐํฉ๋๋ค.
๊ฐ๋จํ๊ฒ ๊ทธ๋ฅ public repository์ ์กด์ฌํ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ private repository๋ก ์ฎ๊ธฐ๊ณ , clone์์๋ง ์ฐ๋ํด์ ๊ฐ์ ธ์จ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
3. public repository์ submodule ๋ฑ๋ก
git submodule add ${์๋ธ ๋ชจ๋๋ก ๋ฑ๋กํ github repository์ ์ฃผ์}
์์ ๊ฐ์ด ๋ฉ์ธ ํ๋ก์ ํธ์ submodule์ ๋ฑ๋กํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ์์ ๊ฐ์ด ํ๋ก์ ํธ์ ์ต์์ ๊ฒฝ๋ก์ submodule์ repository name์ ๊ฐ์ง ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค.
4. .gitmodules ํ์ธ
์ ๊ณผ์ ๊น์ง ๊ฑฐ์ณค๋ค๋ฉด ํ๋ก์ ํธ์ ์ต์์ ํด๋์ .gitmodules ํ์ผ์ด ์์ฑ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ฉ์ธ ํ๋ก์ ํธ๋ฅผ github๋ก push ํ๋ฉด ์๋์ ๊ฐ์ด main ํ๋ก์ ํธ(public repository)์ submodule(private repository)๊ฐ ์์ฑ๋ฉ๋๋ค.
public repository ์ด๋๋ผ๋ ์ submodule ํด๋๋ private respository ๊ถํ์ด ์๋ ์ ์ ๋ ์ ๊ทผํ ์ ์์ต๋๋ค.
5. ๋ง์ฝ submodule์ ํ์ผ์ด ์์ ๋์๋ค๋ฉด?
๋ง์ฝ submodule์ ํ์ผ์ด ์์ ๋์๋ค๋ฉด git submodule update --remote ๋ช
๋ น์ด๋ฅผ ํตํด์ submodule์ ์ต์ ๋ด์ฉ์ ๋ฉ์ธ ํ๋ก์ ํธ์ ๊ฐฑ์ ํ ์ ์์ต๋๋ค.
๋ํ main project๋ฅผ ์๋ก clone ํ์์ ๊ฒฝ์ฐ์๋ ์ ๋ช
๋ น์ด๋ฅผ ํตํด์ submodule์ ๋ฐ์ ์ฌ ์ ์์ต๋๋ค.
6. gradle์ submodules์ ๋ด์ฉ์ ๋น๋ ์ ๊ฐ์ ธ์ค๊ธฐ
์ด์ submoduleํด๋์ ์๋ yml ํ์ผ๋ค์ ๋น๋ ์์ submodule-test/src/main/resources ๊ฒฝ๋ก๋ก ๊ฐ์ ธ์ค๊ฒ ํ๋ ์์
์ด ํ์ํฉ๋๋ค.
build.gradle์ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
task copyPrivate(type: Copy) {
copy {
from './submodule-data'
include "*.yml"
into 'src/main/resources'
}
}
from์ submodule์ ํด๋๋ฅผ ์ง์นญํ๊ณ , include๋ ํฌํจํ ํ์ผ, ๊ทธ๋ฆฌ๊ณ into๋ ๋น๋ ์์ ๋ฃ์ ๊ฒฝ๋ก๋ฅผ ์ง์นญํฉ๋๋ค.
๊ฒฐ๊ณผ
๊ฐ๋จํ๊ฒ ์์ ๊ฐ์ด TestEntity๋ฅผ ๋ง๋ค์๊ณ , ์คํํ์ ๋ ๋ฌด์ฌํ ํ ์ด๋ธ์ด ์์ฑ๋๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.