"์ง์์ ํตํฉ์ด๋ ๋ฌด์์ ๋๊น?"
Wiki๊ฐ ์ด ์ง๋ฌธ์ ๋ํด ๋ฌด์์ ๋งํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค . ์ง์์ ์ธ ํตํฉ(CI, English Continuous Integration)์ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ์์ ๋ณต์ฌ๋ณธ์ ๊ณตํต์ ์ฃผ์ ๊ฐ๋ฐ ๋ธ๋์น์ ๋ณํฉํ๊ณ ์ด๊ธฐ์ ํ๋ก์ ํธ์ ์๋ํ๋ ๋น๋๋ฅผ ์์ฃผ ์ํํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ์์ ๋๋ค. ์ ์ฌ์ ์ธ ๊ฒฐํจ์ ๊ฐ์งํ๊ณ ํตํฉ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ๋ฌด์ญ์ง ์๋์? ์ด ์ฉ์ด๋ฅผ ๊ฐ๋จํ ๋จ์ด๋ก ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. ์ง์์ ์ธ ํตํฉ์ ๋ฒ๊ทธ์ ๋นํธํ์ฑ์ ๊ฐ์งํ๊ธฐ ์ํด ํน์ ์ปดํจํฐ์์ ํน์ ๊ตฌ์ฑ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ํ๋ ํ ์คํธ๋ฅผ ์ํํ๋ ์์คํ ์ ๋๋ค. ์ข์์, ๋ฌธ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์๋์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ธ ์ง๋ฌธ์ด ์๊น๋๋ค.CI๊ฐ ์ ํ์ํ๊ฐ์?
๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ์์ฑ ์ค์ด๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐ/๋ณ๊ฒฝํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์์ฑํ๊ณ , ํ ์คํธ๋ฅผ ์์ฑํ๊ณ , ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ํ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ๊ณ , ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ธ ๋ฒ์งธ ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ค๊ฐ ๋ฒ๊ทธ๊ฐ ์ด๋๊ฐ์ ๋น ์ ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ํฉ์ด ์์ต๋๋ค. ์, ์ด๊ฒ์ด ์๋ชป ์ค๊ณ๋ ํ๋ก์ ํธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ๋งํ ์ ์์ผ๋ฉฐ ๊ทํ๊ฐ ์ณ์ ์๋ ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ ์ง ์๊ณ ์ด๋ฌํ ์ฐ๊ฒฐ์ด ์ค์ ๋ก ์กด์ฌํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ๋ฅผ ๋ ๋ฒ ์ด์ ์์ฑํ๊ณ ์์ฑํ๋ ๊ฒฝ์ฐ(์ข ์ข ๋ฐ์ํ๋ ๊ฒฝ์ฐ)๋ ์ด๋ป๊ฒ ๋ฉ๋๊น? ์๋ก ์์ฑ๋ ๊ธฐ๋ฅ์ ๋ํด ํ ์คํธ๋ฅผ ์คํํ๊ณ ๊ธ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค. ๋น์ ์ ๋นจ๋ฆฌ ์ฝ์์ ํ ๋ค์ ์ด๋๊ฐ๋ก ๋ฐ๊ณ ๊ฐ ๋น์ผ ์์คํค๋ฅผ ๋ง์๋ฉด์ ์ง์์ ์๊ฐ๋ฅผ ์ด๋ป๊ฒ ํผ์ธ ๊ฒ์ธ์ง ์ด๋ฏธ ์๊ฐํ๊ณ ์์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ์ํ๊น๊ฒ๋ ๋น์ ์ ๋๋ฃ๋ ์์ฌ๋ ๋น์ ์ ์ปค๋ฐ์ผ๋ก ์ธํด ์ ์ฒด ๋น๋๊ฐ ์ค๋จ๋์๋ค๊ณ ๋งํฉ๋๋ค. ๋น์ ์ ๋น์ ์ด ํ๋ก๊ทธ๋๋จธ์ด๊ณ ๋ชจ๋ ๊ฒ์ ํ ์คํธํ๋ค๊ณ ๋นํฉํ๋ฉด์ ๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ข ์ข ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ์ง์์ ์ผ๋ก ํ ์คํธํ ์๊ฐ์ด ์์ผ๋ฉฐ ์ ์ฒด ์ด์ ๋ธ๋ฆฌ๊ฐ ์๋ ๋ณ๊ฒฝํ ์ฝ๋ ๋ถ๋ถ๋ง ํ ์คํธํ์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก CI๊ฐ ์ฐ๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๊ณณ์ ๋๋ค. ๋ฆฌ์์ค์ ํธ์ํ ๋๋ง๋ค CI๋ ํ๋ก์ ํธ๋ฅผ ์ฒ์๋ถํฐ ๋น๋ํ๊ณ ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. ๋ชจ๋ ํ ์คํธ๊ฐ ํต๊ณผํ๊ณ ํ๋ก์ ํธ๊ฐ ๋น๋๋ ๊ฒฝ์ฐ์๋ง ๋น๋๊ฐ ํต๊ณผ ์ํ๋ฅผ ๋ฐ์ต๋๋ค . ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ๋์์์ ๋ฌด์์ด ์๋ชป๋์๋์ง ํ์ธํ ๊ธฐํ๊ฐ ์์ ๊ฒ์ ๋๋ค. ์ด์ "์ ์ด๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์๊ฐ? " ๋ผ๋ ์ง๋ฌธ์ ๋์ ธ์ผ ํ ๋์ ๋๋ค. ์ํํธ์จ์ด ๊ตฌํ์ ์ดํด๋ณด์ธ์. ์์ ์ด๋ฏธ ๋งํ๋ฏ์ด ์ด ๊ธ์ Maven๊ณผ Git์ ์ต์ํ ์ฌ๋๋ค์ ๋์์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก CI ๋ฑ์ ์ค์ ์ธ์ ์ ๊ฐ ํ๋ ์ผ์ด ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ํ๋์ง ์์์ฃผ์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.-
๋จผ์ ๊ฐ๋จํ Maven ํ ์คํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ "Hello World!"๋ฅผ ์ธ์ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋ช ๊ฐ์ง ๊ฐ๋จํ ์์ ์ ์ํํ๊ณ ์ด ํด๋์ค์ ๋ํ ๊ฐ์ฅ ๊ฐ๋จํ ํ ์คํธ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
๋ชจ๋ ์์ค๋ ๋ด GitHub์ ์์ต๋๋ค. Main์ ๋ฌด์์ ์์ฑํ๊ณ ์ด๋ค ํ ์คํธ๊ฐ ์์์ง๋ ์ค์ํ์ง ์์ต๋๋ค.
-
์ฐ๋ฆฌ๋ ํ๋ก์ ํธ๋ฅผ GitHub์ ํธ์ํฉ๋๋ค.
-
์ด์ ์ฌ๋ฏธ์๋ ๋ถ๋ถ์ด ๋์ต๋๋ค. CI ์ค์์ ๊ฐ์ฉ์ฑ๊ณผ ์์ ์ฑ ๋๋ฌธ์ Travis CI๋ฅผ ์ ํํ์ต๋๋ค. Travis๋ GitHub๋ฅผ ์ฌ์ฉํ์ฌ ์์ค ์ฝ๋๋ฅผ ํธ์คํ ํฉ๋๋ค.
Travis CI ํํ์ด์ง ์ ์ ์ํ์ฌ GitHub๋ฅผ ํตํด ๋ก๊ทธ์ธ์ ํด์ฃผ์ธ์. ํ๋กํ์์ ํ๋ก์ ํธ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
๋๋ฅผ ๋๋ง๋ค ๋ชจ๋ ๊ฒ์ด ์กฐ๋ฆฝ ์ค๋น๊ฐ ๋์ด ์์ง๋ง ๋ฌธ์ ๋ ์ด๋ป๊ฒ ์กฐ๋ฆฝํ๋๋์ ๋๋ค.
-
์ฐ๋ฆฌ๊ฐ ์ฌ๋ํ๋ IDEA๋ก ๋์๊ฐ์ .travis.yml ํ์ผ์ ๋ง๋ญ๋๋ค.
์ด ํ์ผ์ Travis ๋น๋ ๊ตฌ์ฑ์ ๋ด๋นํฉ๋๋ค. ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ค์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ํ๋ก์ ํธ๊ฐ ๊ตฌํ๋๋ ์ธ์ด๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค .
- ๋น๋ ์๋๋ฅผ ๋์ด๋ ค๋ฉด ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ธ์ .
- ์กฐ๋ฆฝ ์ฑ๊ณต ๋๋ ์คํจ์ ๋ํ ์๋ฆผ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค .
์ผ๋ฐ์ ์ธ Travis ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# https://docs.travis-ci.com/user/languages/java/ language: java jdk: oraclejdk9 # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects cache: directories: - $HOME/.m2 # Notifications https://docs.travis-ci.com/user/notifications/ notifications: email: recipients: - qThegamEp@gmail.com on_success: always # default: change on_failure: always # default: always
๋ช ํ์ฑ์ ์ํด ๋งํฌ์ ํจ๊ป ์ค๋ช ์ ์ถ๊ฐํ์ต๋๋ค.
-
๋ค์ GitHub๋ก ํธ์ํ๊ณ Travis ์น์ฌ์ดํธ๋ฅผ ์ด๊ณ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ๋น๋๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฑ๊ณต์ ์ธ ๋น๋์ ๋ํ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
๋ํ ์ฌ์ดํธ์์ ํ๋ก์ ํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์กฐ๋ฆฝ๋์๋ค๋ ๋ฐฐ์ง๋ฅผ ๋ณผ ์ ์์ผ๋ฉฐ ์ด๋ฅผ README.md์ ์ฝ์ ํ ์ ์์ต๋๋ค.
-
์ดํดํ์ง ๋ชปํ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋ณด๊ฑฐ๋ ๋ค์ด๋ก๋ํ ์ ์๋ ํ ์คํธ ํ๋ก์ ํธ ์ ๋๋ค .
-
์ค์ ๋ก Travis CI ์น์ฌ์ดํธ ์์ฒด ;
-
Travis CI ์ค์ ๋ฐ ์ฌ์ฉ์ ๋ํ ๊ณต์ ์น์ฌ์ดํธ์ ํํ ๋ฆฌ์ผ์ ๋๋ค .
-
์ข์ ๋น๋์ค ;
- ๋ ๋ค๋ฅธ ํํ ๋ฆฌ์ผ ;
GO TO FULL VERSION