DevLog ๐ถ
[Jenkins] AWS ์ธ์คํด์ค๋ฅผ ์ ํจ์ค๋ก ๋ฐฐํฌํด๋ณด๊ธฐ - 1ํธ ๋ณธ๋ฌธ
[Jenkins] AWS ์ธ์คํด์ค๋ฅผ ์ ํจ์ค๋ก ๋ฐฐํฌํด๋ณด๊ธฐ - 1ํธ
dolmeng2 2023. 5. 30. 20:31๐ฑ ๋ค์ด๊ฐ๊ธฐ ์
์ด๋ฒ ๋ฏธ์
์์ ์ ํจ์ค๋ฅผ ํตํด CI / CD๋ฅผ ๊ตฌ์ถํด๋ณด๊ณ ์ถ์ด์ โญ๏ธ๋ฒ ๋ฒ ์ ์๋โญ๏ธ์ ํ์ ๋น๋ ค์ ํ ๋ฒ ์งํํด๋ณด์๋ค.
๋๋ t4g.micro๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ ๋จ์ด 1๊ธฐ๊ฐ๋ฐ์ ์ ๋์ด์ swap์ ํด์ฃผ์์ด์ผ ํ๋๋ฐ,
โญ๏ธ ์ค์ํ ๊ฑด swap ์ 1~1.5๊ธฐ๊ฐ ์ ๋๋ง ํด์ผ ํ๋ค๋ ๊ฒ์ด์๋ค.
๋๋ 2๊ธฐ๊ฐ๋ก ํด์ ์ง๊ธ Use๊ฐ 95%๋ก ๊ฐ๋น๊ฐ๋นํ๋ค.
์๋ ์ ๋ผ์ ๋ก์ปฌ๋ก ์คํํ๊ณ ๋๋ฆฌ์น๋ค๊ฐ ๋ค์ ์๋ํ๋๋ฐ ๋๊ธฐ๋ ํ๋ค...
1.5๊ธฐ๊ฐ๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์คํํด์ฃผ๋ฉด ๋๋ค.
# ๊ธฐ์กด์ ์กด์ฌํ๋ /swapfile์ ๋นํ์ฑํํ๊ธฐ
sudo swapoff /swapfile
# ํฌ๊ธฐ๊ฐ 1.5๊ธฐ๊ฐ์ธ /swapfile ์์ฑํ๊ธฐ
sudo fallocate -l 1.5G /swapfile
# /swapfile์ ๋ํ ํ์ผ์ ๊ถํ ๋ณ๊ฒฝํ๊ธฐ
sudo chmod 600 /swapfile
# swapfile์ ์ถ๊ฐํ๊ธฐ ์ํ swap ๊ณต๊ฐ์ ์์ฑํ๋ค.
sudo mkswap /swapfile
# swapfile์ swap ๋ฉ๋ชจ๋ฆฌ์ ์ถ๊ฐํ๋ค.
sudo swapon /swapfile
# /esc/fstab ํ์ผ์ ํ์ผ ์์คํ
๋ง์ดํธ ์ ํ์ํ ๊ตฌ์ฑ ํ์ผ์ ์์ ํ๋ค.
sudo vim /etc/fstab
# ํ์ผ์ ๋งจ ๋์ /swapfile์ ์ค์ ์์ญ์ผ๋ก ๋ง์ดํธํ๊ธฐ ์ํ ์ต์
์ ์ถ๊ฐํ๋ค.
# ๋ง์ดํธํ ํ์ผ์ ๊ฒฝ์ฐ + ํ์ผ ์์คํ
์ ํ ์ง์ (none) + ๋ง์ดํธํ ํ์ผ์ ์ ํ ์ง์ (swap) + ๋ง์ดํธ ์ต์
(sw, ์ค์ ์์ญ์ ์๋ฏธํจ)
# 0 (ํ์ผ ์์คํ
์ด ๋ฐฑ์
๋์ด์ผ ํ๋์ง ์ฌ๋ถ, ์ฌ๊ธฐ์๋ ๋ฐฑ์
X) + 0 (ํ์ผ ์์คํ
์ ๊ฒ์ฌ ์์ ์ง์ ) - ๊ฒ์ฌํ์ง ์์
/swapfile none swap sw 0 0
# ์์คํ
์ฌ๋ถํ
sudo reboot
์ดํ free๋ฅผ ํตํด swap์ด ์ ๋์๋์ง ํ์ธํ๋๋ก ํ์.
๐ฑ ๋์ปค๋ก ์ ํจ์ค ์คํํ๊ธฐ
๐ก ์ฐธ๊ณ ๋ก, ์ฌ๊ธฐ ์๋์์ ๋์ค๋ ์ด๋ฏธ์ง๋ค์ ๋ก์ปฌ ์ ํจ์ค๋ก ์๋ํ์ ๋ ์บก์ณํ๋ ๊ฒ๋ค์ด์ด์ ๋งฅ ํ๊ฒฝ์
๋๋ค! (์ถํ EC2 ํ๊ฒฝ์์ ํจ)
๋จผ์ , ์ค๋น๋ฌผ๋ก ๋์ปค๊ฐ ํ์ํ๋ค.
sudo snap install docker
sudo apt install docker.io
docker.io๋ฅผ ์คํํ ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋ ๋ ๊ด์ฐฎ๋ค. ์ ์์ ์ผ๋ก ์ค์น๋์์์ ์๋ฏธํ๋ค.
์ ์ค์น๋์๋์ง ์ฒดํฌํ๊ธฐ ์ํด ๋์ปค ๋ฒ์ ์ ํ์ธํด์ฃผ์.
docker --version
๊ทธ๋ฆฌ๊ณ , ์ ํจ์ค๋ฅผ ์คํํด์ฃผ๊ธฐ ์ํ docker-compose ํ์ผ์ ์์ฑํด์ฃผ์.
version: "3.9"
services:
jenkins:
image: jenkins/jenkins
restart: always
ports:
- "8081:8080"
๊ฐ๋จํ๊ฒ ์งํํ๊ธฐ ์ํด์ ์ด๋ฏธ์ง์ ํฌํธ ์ต์
์ธ์ ๋ณ๋ค๋ฅธ ๊ฒ์ ์งํํ์ง ์์๋ค.
์ด๋, ํฌํธ ์ต์
์ 8081๋ก ๋์๋๋ฐ, EC2 ์ธ์คํด์ค์ inbound rules์์ ํ์ฉ๋ ํฌํธ ์ฃผ์์ฌ์ผ ํ๋ค.
๋๋ ์ฌ๊ธฐ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ 8081๋ฐ์ ์๋ ์ํฉ์ด์์ด์ 8081 ํฌํธ๋ก ์งํํ์๋ค.
์ดํ, docker-compose ํ์ผ์ ์คํํ์ฌ ๋์ปค ์ปจํ
์ด๋๋ฅผ ์คํํ์.
docker-compose up -d
์ฐธ๊ณ ๋ก ๋๋ ์ด๋ฏธ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ฐ์์ง ์ํ์ฌ์ ์ด๋ ๊ฒ๋ง ๋จ์ง๋ง, ์ฒ์์ด๋ผ๋ฉด ์ ํจ์ค ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๋๋ผ ์กฐ๊ธ ๊ฑธ๋ฆด ๊ฒ์ด๋ค.
(์์ ๋จ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ ํ์ฌ ์คํํ์ง ์๋ ๋์ปค ์ปจํ
์ด๋๊ฐ ์์ด์ ๋ฌ ์ค๋ฅ์ธ๋ฐ, ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค!)
docker ps -a
์ดํ, ์ ์คํ๋์๋์ง ํ์ธํ๊ธฐ ์ํด STATUS์ UP xx minutes๊ฐ ๋จ๋์ง ํ์ธํ์.
๐กEC2์์ ์งํํ๊ธฐ ์ํด์๋ ๋งค๋ฒ sudo๋ฅผ ์
๋ ฅํ๊ณ ์๋ค๋ฉด, ๋ฒ๊ฑฐ๋ก์ฐ๋๊น ์๋์ ๊ฐ์ด docker ์คํ์ ๋ํ ๊ถํ์ ์ฃผ์.
sudo chmod 666 /var/run/docker.sock
์ดํ ์ฌ์์์ ํ๊ฒ ๋๋ฉด sudo ์์ด ํธํ๊ฒ ์คํํ ์ ์์ ๊ฒ์ด๋ค ๐
๐ฑ ๋์ปค๋ก ์ ํจ์ค ์ ์ํ๊ธฐ
publicIP:8081๋ก ์ ์ํ๋ค๋ฉด ์์ ๊ฐ์ ์ฐฝ์ด ๋ฐ ๊ฒ์ด๋ค.
๊ฐ์ฅ ์ฒซ ์ ์์ด๊ธฐ ๋๋ฌธ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ผ ํ๋ค.
docker logs {container_id}
ํฐ๋ฏธ๋์ docker logs + ์ ํจ์ค๊ฐ ๋์์ง ๋์ปค ์ปจํ ์ด๋์ ์์ด๋๋ฅผ ์ ๋ ฅํด๋ณด์. ๊ทธ๋ผ ์๋์ ๊ฐ์ ์ฐฝ์ด ๋ฐ ๊ฒ์ด๋ค.
๋ฑ ๋ด๋ ๋น๋ฐ๋ฒํธ์ฒ๋ผ ์๊ธด ์น๊ตฌ๊ฐ ์๋ค.
์ด ์น๊ตฌ๋ฅผ ๋ณต์ฌํด์ ์์ Administrator password์ ์
๋ ฅํด์ฃผ์.
๊ทธ๋ผ ์ฌ๊ธฐ์ install suggested plugins๋ฅผ ๋๋ฌ์ค๋ค.
์์ ๊ฐ์ด ์ด์ฌํ ์คํ๋๊ณ ์์ ํ
๋ฐ, ์ค์น์๋ 5~10๋ถ ์ ๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฌ์ ๋กญ๊ฒ ๊ธฐ๋ค๋ฆฌ์!
์ดํ, ์ด๋๋ฏผ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์
๋ ฅํด์ค๋ค.
Jenkins์ ์ ์ํ๊ธฐ ์ํ URL์ ์
๋ ฅํ๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก ์
๋ ฅ๋์ด ์๋ ์ํ๊ธด ํ๋ค ใ
ใ
)
๊ทธ๋ผ ์ด๋ ๊ฒ Jenkins ํ๋ฉด์ด ๋ฉ์ง๊ฒ ๋ํ๋๋ค!
๐ฑ ์ ํจ์ค ํ๋ฌ๊ทธ์ธ ์ค์นํ๊ธฐ - gradle
์ฐ๋ฆฌ๋ gradle๋ก ๋น๋๋ฅผ ์งํํ ์์ ์ด๊ธฐ ๋๋ฌธ์ gradle ๊ด๋ จ ํ๋ฌ๊ทธ์ธ์ด ํ์ํ๋ค.
Dashboard > Manage Jenkins > Tools ํด๋ฆญ!
Gradle Installations > Version ์ ํ ํ Save ์งํํ๊ธฐ!
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ต์ ์ด๋ฉด์ ๊ฐ์ฅ ์์ ํ๋ gradle 8.1์ ์ค์นํ์๋ค.
๐ฑ ์ ํจ์ค ํ๋ฌ๊ทธ์ธ ์ค์นํ๊ธฐ - ssh agent
์ถํ ๋์ฌ ์ ํจ์ค ๋ฐฐํฌ ์คํฌ๋ฆฝํธ์์ ssh๋ฅผ ํตํด ์ฐ๋ฆฌ์ EC2 ์ธ์คํด์ค์ ์ ๊ทผ์ ํ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ํ ssh agent๋ผ๋ ์น๊ตฌ๋ฅผ ์ค์นํด๋ณด์.
Dashboard > Manage Jenkins > Plugins ํด๋ฆญ!
Available plugins > ssh agent ๊ฒ์ > ์ค์น ์งํ!
๋ค์ ๊นํ๋ธ ๋์๋ณด๋๋ก ๋์๊ฐ ๋ค์, ์ผ์ชฝ์ Manage Jenkins > ์๋์ชฝ์ Credentials ํด๋ฆญ!
Stores scoped To Jenkins > Domains > global ํด๋ฆญ!
Add Credentials ํด๋ฆญ!
SSH-Username with private key ์ ํ ํ, ID๋ ์๋ฌด๊ฑฐ๋, Username์ EC2 ํธ์คํธ ๋ค์์, Private key์๋ EC2 ์ธ์คํด์ค ์ ์์ ์ํ pem ํค๋ฅผ ์
๋ ฅํ๋ค. (cat xx.pem์ ํตํด ๋์จ ๋ด์ฉ์ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํด์ค๋ค.)
์ถ๊ฐ๊ฐ ์๋ฃ๋๋ฉด ์ด๋ฐ ์์ผ๋ก ๋ชฉ๋ก์ ๋ฌ๋ค.
์๊ฐ๋ณด๋ค ๊ธ์ด ๊ธธ์ด์ ธ์ 2๊ฐ๋ก ๋๋๊ณ ์ ํ๋ค.
๋ค์ ํฌ์คํ
์ผ๋ก ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ ์ฐ๋ + ์ ํจ์ค ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์ ํด๋ณด์!