2023. 7. 8. 14:42ใSystem ์์ ์ค/DevOps
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Docker๋ฅผ ์ด์ฉํ Jenkins ์ค์น
๐ฝ Ubuntu 22.04.05 LTS Server
๐ฆ Jenkins ์ค์น
์ต์ด Docker Hub๋ฅผ ํตํด Jenkins Image๋ฅผ ๋ฐ์์ฃผ๋๋ก ํ ๊ฒ์.
๊ทธ๋ฐ ๋ค Image๋ฅผ ์ด์ฉํด์ Docker Cotainer๋ฅผ ์ ์ฌํด ๋ณผ๊ฒ์.
์ฃผ๋๋ Shell Script๋ฅผ ๋ง๋ค์ด์ ์ฐจํ์๋ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด ๋ณผ๊ฒ์.
์ฃผ๋๋ ์์ ๊ฐ์ด Docker ์คํ ๋ช
๋ น์ด๋ฅผ Shell Script๋ก ๋ง๋ค์ด ์ฃผ์์ด์.
-d๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์๋ํ๋ผ๋ ์๋ฏธ
-p๋ Port Mapping์ผ๋ก Docker Host Port์ Docker ๋ด๋ถ Port๋ฅผ Mapping
-v๋ Jenkins Container ์์ Directory /var/jenkins_home์ Host Directory /data/docker_data/mapping/giggal-jenkins์ ์ฐ๊ฒฐํ๋ผ๋ ์๋ฏธ์ธ๋ฐ, ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ Container ๋ด๋ถ์ ๋ค์ด๊ฐ์ง ์๊ณ , Host OS์์ ๊ฐํธํ๊ฒ File ๋ฑ์ ๋ฃ๊ณ , ๋นผ๊ณ ํ๊ธฐ ์ํจ์ด์์.
๊ทธ๋ฐ ๋ค ํด๋น Shell Script์ ๊ถํ์ ์กฐ์ ํด ์ฃผ์์ด์.
์์ ๊ฐ์ด ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ฃผ๋ฉด Docker Container๊ฐ ์ ์ฌ๋๊ณ , ๊ธฐ๋๋๋ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด Docker Host Server IP์ Mappingํ Port ๋ฒํธ๋ฅผ ์จ์ฃผ๋ฉด ์ด๋ ๊ฒ ์ ์ํ ์ ์๋๊ฑธ ํ์ธํ ์ ์์ด์.
๐ฆ Jenkins ์ด๊ธฐ ๊ตฌ์ฑ
์์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค๋ฉด ์ด๊ธฐ ์ํธ๊ฐ์ ๋ฃ์ด์ค์ผ ํด์.
์์ ๊ฐ์ด ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ฃผ๋ฉด ์๋์ชฝ ๋นจ๊ฐ์์ผ๋ก ํ์ํด ๋ ๊ฒ์ฒ๋ผ ์ํธ๊ฐ์ ๋ฐ๊ฒฌํ ์ ์์ด์.
์ด๊ฑธ ์
๋ ฅํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค Continue๋ฅผ ๋๋ฌ ๋์ด๊ฐ๊ฒ์.
์ด ๊ณณ์์๋ Install suggested plugins๋ฅผ ๋๋ฌ ๊ถํ Plugin ๋ค์ ๋ชจ๋ ์ค์นํด ์ฃผ๋๋ก ํ ๊ฒ์.
Plugin ์ค์น๊ฐ ๋ชจ๋ ๋๋๋ฉด ์์ ๊ฐ์ด ๊ณ์ ์ ์์ฑํ๊ณ , Save and Continue๋ฅผ ๋๋ฌ ์ค์ ์ ๋ง๋ฌด๋ฆฌ ํด ์ค๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ก ์ ์ํ Jenkins URL์ ์ค์ ํด ์ฃผ๊ณ , Save and Finish๋ฅผ ๋๋ฌ์ค๊ฒ์.
์์ ๊ฐ์ด ๋์จ๋ค๋ฉด ์ค์ ์ด ์๋ฃ๋ ๊ฒ์ด๊ณ , Start using Jenkins๋ฅผ ๋๋ฌ Jenkins๋ฅผ ๋ง๊ตฌ๋ง๊ตฌ ๊ฐ์ง๊ณ ๋๋ฉด ๋๋ต๋๋ค.
๐ฝ Jenkins ์ด๊ธฐ ๊ตฌ์ฑ
๐ฆ Gradle ์ค์น
์ฃผ๋๋ ์ ํจ์ค๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌ๋ฅผ ํ ๋, Java + Spring Boot (Gradle) API๋ฅผ ๋ฐฐํฌํด ๋ณด๋ ค๊ณ ํด์.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ํจ์ค์ Gradle์ ์ค์นํด ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ง์ฝ Maven์ ์ฌ์ฉํ ๊ณํ์ด์๋ผ๋ฉด? ์๋๋ก ๋ ๋ด๋ ค๊ฐ์๋ฉด ๋ง๋๋ณด์ค ์ ์์ด์.
์ฃผ๋์ฒ๋ผ ๋์ปค๋ฅผ ์ด์ฉํ์๋ค๋ฉด ์ ํจ์ค ์ปจํ
์ด๋์์ ์งํํด์ผ ํด์.
์ ์์ ์ผ๋ก Gradle์ด ์ค์น ๋์๋์ง ํ์ธํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค์ Jenkins Plugin ์ค ์ Plugin์ด ์ค์น ๋์๋์ง ํ์ธํด ์ฃผ์์ด์.
Jenkins ๊ด๋ฆฌ์์ Global Tool... ๋ก ๋ค์ด๊ฐ๊ฒ์.
Gradle์ ๋ํ ์ค์ ์ด ์๋๊ฒ์ ๋ณผ ์ ์์ด์.
๋จผ์ Project ๋ด์์ Gradle Version์ ํ์ธํด ์ค๊ฒ์.
์ฃผ๋๋ 7.5 Version์ ์ฐ๊ณ ์์ด์.
๐ฆ Maven ์ค์น
Manage Jenkins -> Jenkins Plugins -> available(์ค์น ๊ฐ๋ฅ) -> maven
์์ ๊ฐ์ด maven Plugin์ ์ฐพ์ ์ค์นํด ์ฃผ๋๋ก ํ ๊ฒ์.
Manage Jenkins -> Global Tool Configuration
ํด๋น Plugin์ด ์ค์น๊ฐ ์๋ฃ ๋์๋ค๋ฉด Global Tool Configuration์ Maven ์ชฝ์ผ๋ก ์ด๋์ ํด ์ฃผ์ธ์.
Add Maven์ ๋๋ฅด๋ฉด ์์ ๊ฐ์ด Maven์ ์ค์นํ๊ณ , ์ค์ ํ ์ ์๋ ๋ถ๋ถ์ด ๋์์.
Install automatically๋ฅผ ๋๋ฅด๋ฉด Jenkins Server์ maven์ ์๋์ผ๋ก ์ค์นํด ์ค ๊ฑฐ์์.
mvn --version
Jenkins Container์์ ์ค์น ๋์ด ์๋์ง ํ์ธํด ๋ณด๊ธฐ ์ํด ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ฃผ์๋๋
์ญ์ ์ค์น๊ฐ ๋์ง ์์ ๊ฒ์ ํ์ธํ ์ ์๋ ๊ฒ์ด์์.
์ฃผ๋๋ ์ต์ ๋ฒ์ ๋ณด๋ค ํ๋จ๊ณ ์๋ Version์ธ 3.8.5 Version์ ์ค์นํด ์ฃผ๋๋ก ํ ๊ฒ์.
๋งจ ๋ฐ์ Apply๋ฅผ ๋๋ฅด๊ณ , save๋ฅผ ๋๋ฅธ ๋ค ํด๋น ํ๋ฉด์ ๋์์ค๋๋ค.
์ด๋ฒ ๊ธ์ ์ฌ๊ธฐ์ ๋ง๋ฌด๋ฆฌ ํ๋๋ก ํ ๊ฒ์!
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."