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๋ถ„ ์ •๋„ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์œ ๋กญ๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ์ž!
 

์ดํ›„, ์–ด๋“œ๋ฏผ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค.
 

์›๋ž˜๋Š” localhost๊ฐ€ ์•„๋‹ˆ๋ผ EC2 Public IP:8081 ๊ฐ™์€ ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค. (์˜›๋‚ ์— ์บก์ณํ•จ...)

 

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๊ฐœ๋กœ ๋‚˜๋ˆ„๊ณ ์ž ํ•œ๋‹ค.
๋‹ค์Œ ํฌ์ŠคํŒ…์œผ๋กœ ๊นƒํ—ˆ๋ธŒ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์—ฐ๋™ + ์  ํ‚จ์Šค ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์ •ํ•ด๋ณด์ž!

Comments