2021. 4. 30. 16:18ใ๐ฑ Develop/devOps
์ด์ ec2์ jenkins๋ฅผ ์ธ ์ ์๋ ์ค๋น๋ฅผ ์๋ฃํ์ผ๋, ์ด์ ๋ github๊ณผ Jenkins๋ฅผ ์ฐ๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- github ์์ด๋/๋น๋ฐ๋ฒํธ๋ก ์ ์
- ec2 ssh ๊ณต๊ฐํค/๋น๋ฐํค๋ก ์ ์
์ฌ๊ธฐ์๋ ๋ณด์ ์์ ์ด์ ๋ก ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ธ ssh๋ก ์ฐ๊ฒฐํ๊ฒ ์ต๋๋ค. ์ฐ๋ํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. EC2์์ ssh ํค ์์ฑ
2. Github์์ ssh ํค, webhook ๋ฑ๋ก
3. Jenkins์ Credential ssh ํค ๋ฑ๋ก
4. Gradle ๋ฒ์ ์ค์ ํ๊ธฐ
1๏ธโฃ EC2 ssh ํค ์์ฑํ๊ธฐ
docker-compose ๋ฅผ ์คํํ๊ณ ๋์ ls -a ๋ก ํด๋๋ฅผ ๋ณด๋ฉด .ssh๊ฐ ์์ฑ๋์ด ์์ต๋๋ค. .ssh ํด๋๋ก ๋ค์ด๊ฐ์ ssh ํค๋ฅผ ์์ฑํด์ฃผ๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ฃผ์ธ์.
๐ /home/ec2-user/compose/.ssh
sudo ssh-keygen - rsa
ํด๋น ssh ํค๋ /root/.ssh/id_rsa ์ ์ ์ฅ๋ฉ๋๋ค. ssh ํค ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ผ๋ฉด, cat ํด๋น ๊ฒฝ๋ก๋ก ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ๋ฉ๋๋ค.
2๏ธโฃ Github์์ ssh ํค ๋ฑ๋ก
์ด์ ssh์ ๊ณต๊ฐ ํค๋ฅผ github์ ์ ์ฅํด๋ด ์๋ค. ๋จผ์ sudo cat /root/.ssh/id_rsa.pub ์ผ๋ก ๊ณต๊ฐํค ๊ฐ์ ์ป์ด์ต๋๋ค.
ํค ๊ฐ์ ๋ณต์ฌํด์ ํ๋ก์ ํธ ๋ ํฌ์งํ ๋ฆฌ settings > Deploy Keys ๋ก ๋ค์ด๊ฐ์ ํค๋ฅผ ์์ฑํด์ค๋๋ค. ์ ๋ Jenkins๋ผ๋ ์ ๋ชฉ์ผ๋ก ํค๋ฅผ ์์ฑํด์ฃผ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ github webhook์ผ๋ก ์์ค์ฝ๋๋ฅผ master์ push ํ๋ฉด ์๋์ผ๋ก Jenkins๊ฐ ๋น๋ํด์ฃผ๋๋ก ์ค์ ํฉ๋๋ค. ๋์ผํ settings์์ ์ด๋ฒ์ webhook์ผ๋ก ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ์ธ์.
3๏ธโฃ Jenkins์ Credential ๋ฑ๋ก
์ด์ ๋ค์ ec2๋ก ๋์๊ฐ์, ๋น๋ฐํค๋ฅผ ๊ฐ์ ธ์๋ด ์๋ค. sudo cat /root/.ssh/id_rsa ์ผ๋ก ๋น๋ฐ ํค๋ฅผ ๊ฐ์ ธ์์, ์ด๋ฒ์๋ Jenkins๋ก ๊ฐ๋ณด๊ฒ ์ต๋๋ค.
Jenkins ๊ด๋ฆฌ > Manage Credentials > Stores scoped to Jenkins > Global Credentials๋ก ๋ค์ด๊ฐ์ Credential์ ์ถ๊ฐํด์ค๋๋ค.
Credentials ํ์ ์ SSH Username with private key์ ๋๋ค. Private Key์ ec2์์ ๋ณต์ฌํ๋ ssh private key๋ฅผ ๋ฃ์ด์ค๋๋ค.
4๏ธโฃ Gradle ๋ฒ์ ์ค์ ํ๊ธฐ
์ ๋ springboot, gradle์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Jenkins ์ค์ > Global Tool Configuration์์ ๋ฏธ๋ฆฌ ์ gradle ๋ฒ์ ์ ์ ์ฅํด์ฃผ์์ต๋๋ค. gradle ๋ฒ์ ์ intellij์์ ๐gradle > ๐wrapper > gradle-wrapper.properties์ ๊ฐ๋ฉด ์ ์์์ต๋๋ค.
์ด์ ์๋ก์ด jenkins ์์ดํ ์ ๋ง๋ค๊ธฐ ์ํ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค!
๋ค์ ํฌ์คํ ์์๋ ์์ดํ ์ ์์ฑํ๊ณ , github ๋ ํฌ์งํ ๋ฆฌ์ ์๋ springboot ํ๋ก์ ํธ๋ฅผ ๋น๋ํด๋ณด๋ ๊ณผ์ ์ ํ ์คํธํด๋ณด๊ฒ ์ต๋๋ค.