๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ‹ AWS

[ Jenkins ] Jenkins Item Freestyle CI/CD ๋ฐฐํฌ

by MuGeon Kim 2023. 4. 19.
๋ฐ˜์‘ํ˜•

1. ์„œ๋ก 


์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” AWS EC2์—์„œ Jenkins Item์— FreeStyle ๋ฐฐํฌ์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ธ€์„ ์ž‘์„ฑ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๋ฅผ ํฌ๊ฒŒ 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด Github๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹๊ณผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ Jenkins์— ๋Œ€ํ•ด์„œ ์ฒ˜์Œ ํ•™์Šต์„ ํ•˜์‹ ๋‹ค๋ฉด ๊ธฐ์กด์— ์ •๋ฆฌํ•œ Jenkins์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ๋ณด์‹œ๋Š”๊ฑธ ์ถ”์ฒœ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

[ Jenkins ] Jenkins CI/CD ๋ฌด์—‡์ธ๊ฐ€?

1. ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ์ด์œ  ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” Jenkins๋ฅผ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค Jenkins๋ฅผ ํ•™์Šตํ•œ ์ด์œ ๋Š” ์‹ ์ž…์œผ๋กœ ์ทจ์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋Œ€์‚ฌํ•ญ์„ ๋ณด๋ฉด Jenkins CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์šฐ๋Œ€

pos04167.tistory.com

 

2. ๋ณธ๋ก 


์ผ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

GitHub - KMGeon/DeployAWS: Jenkins CI/CD ์—ฐ์Šต & Git Squash Merge ์—ฐ์Šต

Jenkins CI/CD ์—ฐ์Šต & Git Squash Merge ์—ฐ์Šต. Contribute to KMGeon/DeployAWS development by creating an account on GitHub.

github.com

์ผ๋‹จ ์‹ค์Šต์„ ํ•˜๊ธฐ ์œ„ํ•ด Dockerfile์„ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค.

FROM openjdk:11-jdk
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

AWS EC2์— ์ ‘์†ํ•˜๊ธฐ


 

[ AWS ] AWS๋ž‘ ์นœํ•ด์ง€๊ธฐ-1 (AWS EC2 ๊ธฐ๋ณธ ๋ฐฐํฌ)

[ AWS ] ์™œ ๋‚ด๊ฐ€ ๋ฐฑ์—”๋“œ์ธ๋ฐ AWS ํด๋ผ์šฐ๋“œ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€? ๋‚ด๊ฐ€ ์™œ AWS๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€? ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ Spring์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์™œ ์ทจ์—…์„ ํ•˜๋ ค๋ฉด AWS๊ฐ€ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ

pos04167.tistory.com

 

 

[ AWS ] AWS๋ž‘ ์นœํ•ด์ง€๊ธฐ -2 (์‹œ๊ฐ„ ์„ค์ •)

์‹œ๊ฐ„ ์„ค์ • ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ๊ฐ„์€ ๋ฏธ๊ตญ์œผ๋กœ ์žกํ˜€์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„์„ ์„œ์šธ๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค. timedatectl ์ผ๋‹จ aws์—์„œ ์ œ๊ณตํ•˜๋Š” ์‹œ๊ฐ„์ด ๋ช‡๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธ์„ ํ•ด๋ณด์ž timedatectl

pos04167.tistory.com

 

 

[ AWS ] AWS๋ž‘ ์นœํ•ด์ง€๊ธฐ - 3 (Docker๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌํ•˜๊ธฐ)

[ AWS ] AWS๋ž‘ ์นœํ•ด์ง€๊ธฐ-1 (AWS EC2 ๊ธฐ๋ณธ ๋ฐฐํฌ) [ AWS ] ์™œ ๋‚ด๊ฐ€ ๋ฐฑ์—”๋“œ์ธ๋ฐ AWS ํด๋ผ์šฐ๋“œ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€? ๋‚ด๊ฐ€ ์™œ AWS๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€? ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ Spring์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์™œ ์ทจ์—…์„ ํ•˜

pos04167.tistory.com

 

AWS EC2 ์ธ์Šคํ„ด์Šค ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ•ด๊ฒฐ์„ ์œ„ํ•ด SWAP ํ• ๋‹น


sudo dd if=/dev/zero of=/swapfile bs=128M count=32

sudo chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile

sudo swapon -s

sudo vi /etc/fstab
--------------------
[ vi์— ํ•˜๋‹จ์— ์ถ”๊ฐ€ ] 
/swapfile swap swap defaults 0 0
----------------------
## ์šฉ๋Ÿ‰ ํ™•์ธ
free

์ด๋ ‡๊ฒŒ free๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ swap์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

AWS EC2(ubuntu 20.04)์— Docker๋ฅผ ์„ค์น˜ํ•˜๊ธฐ


# ์˜ค๋ž˜๋œ ๋ฒ„์ „ ์‚ญ์ œ
sudo apt-get remove docker docker-engine docker.io containerd runc

sudo apt-get update
# repository ์„ค์ •
sudo apt-get -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# Docker์˜ Official GPG Key ๋ฅผ ๋“ฑ๋ก
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# stable repository ๋ฅผ ๋“ฑ๋ก
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

# Docker Engine ์„ค์น˜
sudo apt-get -y install docker-ce docker-ce-cli containerd.io

# ์„ค์น˜ ์™„๋ฃŒ ํ™•์ธ, ๋ฒ„์ „ ํ™•์ธ
docker --version

# /var/run/docker.sock ์ ‘๊ทผ ๊ถŒํ•œ ํ—ˆ์šฉ
sudo chmod 666 /var/run/docker.sock

# docker hub ๋กœ๊ทธ์ธ id/pw ์ž…๋ ฅ
docker login

์ด๋•Œ docker login์€ docker hub์— ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ์„ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค๋ฉด Login Success๊ฐ€ ๋™์ž‘์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ดํ›„ Jenkins docker๋กœ ์„ค์น˜๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Docker๋ฅผ ์ด์šฉํ•ด์„œ Jenkins ์„ค์น˜ํ•˜๊ธฐ


docker run \
  --name jenkins-docker \
  -p 8080:8080 -p 50000:50000 \
  -v /home/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -u root \
  -d \
  jenkins/jenkins:lts
  
 
 # jenkins ์ปจํ…Œ์ด๋„ˆ ์ ‘์†
docker exec -it [jenkins ์ปจํ…Œ์ด๋„ˆID] bin/bash

# jenkins ์ปจํ…Œ์ด๋„ˆ log ํ™•์ธ
docker logs [jenkins ์ปจํ…Œ์ด๋„ˆID]

์ด๋•Œ Jenkins ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” docker ps -a๋ฅผ ์ž…๋ ฅํ•ด์„œ ์•„์ด๋””๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

AWS EC2 ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ์ถ”๊ฐ€


Jenkins์˜ ๊ธฐ๋ณธ์ ์ธ ํฌํŠธ๋Š” 8080์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €ํฌ๋Š” 8080ํฌํŠธ๋ฅผ ํ—ˆ์šฉ์„ ํ•ด์•ผ์ง€ ์  ํ‚จ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ์ถ”๊ฐ€๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋ฌด๋ฃŒ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค - AWS ํ”„๋ฆฌ ํ‹ฐ์–ด

Q: AWS ํ”„๋ฆฌ ํ‹ฐ์–ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? AWS ํ”„๋ฆฌ ํ‹ฐ์–ด๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์„œ๋น„์Šค๋ณ„๋กœ ์ง€์ •๋œ ํ•œ๋„ ๋‚ด์—์„œ ๋ฌด๋ฃŒ๋กœ AWS ์„œ๋น„์Šค๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ฆฌ ํ‹ฐ์–ด๋Š” 12๊ฐœ์›” ํ”„๋ฆฌ ํ‹ฐ์–ด, ์ƒ

aws.amazon.com

 

1. aws์— ์ ‘์†ํ•˜์—ฌ ec2์— ์ ‘์†์„ ํ•ฉ๋‹ˆ๋‹ค.

2. ์ดํ›„ ๋ณด์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ๋ณด์•ˆ ๊ทธ๋ฃน์— ๋ฐ‘์— sg-xxxx์— ์ ‘์†์„ ํ•ฉ๋‹ˆ๋‹ค.

3. ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํŽธ์ง‘์„ ํ•˜์—ฌ ๊ทœ์น™ ์ถ”๊ฐ€๋ฅผ ํ†ตํ•ด 8080 ํฌํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

Jenkins ์ ‘์†ํ•˜๊ธฐ


์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜๋ฉด { ํƒ„๋ ฅ์  IP } : 8080 ์ฃผ์†Œ๋ฅผ ํ†ตํ•˜์—ฌ Jenkins์— ์ ‘์†์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ์„ ํ•ด์•ผ๋˜๋Š”๋ฐ ์ด ๊ฒฝ์šฐ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ์„ ํ•ด์•ผ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด docker์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฐพ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

# docker ์ด๋ฏธ์ง€๋กœ ๋ฐฐํฌ์‹œ ํ™•์ธ
docker exec jenkins-docker cat /var/jenkins_home/secrets/initialAdminPassword

 

์ดํ›„ ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅํ•˜๋ฉด Jenkins Plugins Installํ™”๋ฉด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋•Œ Install suggested Plugins๋ฅผ ์ž…๋ ฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •์„ ํ–ˆ์œผ๋ฉด ๋‹ค์Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

Public-over-ssh ์„ค์น˜ํ•˜๊ธฐ


์—ฌ๊ธฐ๊นŒ์ง€ ์„ฑ๊ณต์„ ํ–ˆ๋‹ค๋ฉด public-over-ssh๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜๋ฅผ ํ•ด์•ผ๋ฉ๋‹ˆ๋‹ค.

 

Index of /plugins/publish-over-ssh/latest

 

archives.jenkins-ci.org

์ดํ›„ Jenkins๊ด€๋ฆฌ - Plugin Manager - Advanced settings - Deploy Plugin์— ์„ค์น˜ํ•œ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ submit์„ ํ•ฉ๋‹ˆ๋‹ค.

 

์ดํ›„ ์ œ์ถœ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด public-over-ssh๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค€๋น„๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋•Œ ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด

๋‹ค์‹œ Jenkins ๊ด€๋ฆฌ๋ฅผ ์ฐพ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

(์ค‘์š”) - ๊ณต๊ฐœํ‚ค & ๊ฐœ์ธํ‚ค ์ƒ์„ฑํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ


๊ธฐ์กด์˜ Dashboard > Jenkins ๊ด€๋ฆฌ > Configure System์„ ๋“ค์–ด๊ฐ€๋ฉด publish over SSH๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ธฐ์กด์— ์„ธํŒ…์„ ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋™์ž‘์— ๊ด€ํ•ด์„œ๋งŒ ์„ค๋ช…์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์ด ๋ถ€๋ถ„์ด ์ œ์ผ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์  ํ‚จ์Šค์˜ ๊ฐœ์ธํ‚ค์™€ ๊ณต๊ฐœํ‚ค๋ฅผ ์ƒ์„ฑ์„ ํ•ด์•ผ๋˜๋Š”๋ฐ

์ผ๋‹จ ์„ค๋ช…์„ ํ•˜๊ธฐ ์ด์ „์— ์ž ๊น ์„ค๋ช…์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €ํฌ๋Š” EC2๋ฅผ 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” Jenkins ์ธ์Šคํ„ด์Šค์™€ Work ์ธ์Šคํ„ด์Šค 2๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ๋Š” ssh๋ฅผ ํ†ตํ•ด ์„ค์ •์„ ํ•ด์•ผ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

SSH(Secure Shell)

ssh๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”(RSA)๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๊ธฐ๋ฐ€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. SSH๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋™์•ˆ ์ค‘๊ฐ„์—์„œ ํƒˆ์ทจ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ํฌ๋Š” EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•˜๋ฉด ์•”ํ˜ธํ™”๋œ ํ„ฐ๋„์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •์„ ํ•ด์•ผ๋ฉ๋‹ˆ๋‹ค. ์ €ํฌ๋Š” SSH์—ฐ๊ฒฐ์„ ํ•˜์—ฌ Jenkins ์ธ์Šคํ„ด์Šค์—์„œ docker hub๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ Work ์ธ์Šคํ„ด์Šค์— ๋ฐฐํฌํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐœ์ธํ‚ค์™€ ๊ณต๊ฐœํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ฅผ work ์ธ์Šคํ„ด์Šค์— ssh-server์— ๋“ฑ๋ก์„ ํ•ด์•ผ๋œ๋‹ค.

ssh-keygen -t rsa -b 4096 -m PEM

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์™”๋‹ค๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

์ดํ›„ ๊ฐœ์ธํ‚ค๋ฅผ ํ™•์ธ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

cd /root/.ssh

cat id_rsa.pub

 

Jenkins ๊ณต๊ฐœํ‚ค Work ์ธ์Šคํ„ด์Šค์— ๋“ฑ๋กํ•˜๊ธฐ

์ผ๋‹จ ๊ธฐ์กด์— ๋งŒ๋“ค์—ˆ๋˜ Work ์ธ์Šคํ„ด์Šค์— ์ ‘์†์„ ํ•˜์—ฌ ๊ธฐ์กด์— ์ž‘์—…์„ ํ–ˆ๋˜ ๊ฒƒ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋‹จ docker์— ๋Œ€ํ•œ ์„ค์น˜์™€ ๋กœ๊ทธ์ธ์„ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋“ฑ๋ก์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

# worker-instacne์—์„œ ~/.ssh ๊ถŒํ•œ์„ค์ •
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# jenkins-instance์˜ ๊ณต๊ฐœํ‚ค๋ฅผ worker-instance ์ธ์ฆํ‚ค์— ๋“ฑ๋ก
vi ~/.ssh/authorized_keys

 

์ €ํฌ๊ฐ€ Jenkins ์ธ์Šคํ„ด์Šค์— ์ฐพ์€ ๊ฐ’์„ vi๋ฅผ ํ†ตํ•ด work ์ธ์Šคํ„ด์Šค์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.  ์  ํ‚จ์Šค์— ์ฐพ์€ ๋‚ด์šฉ์„ ์•„๋ž˜์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ์— VI์— ๋Œ€ํ•ด์„œ ์ฒ˜์Œ ํ•™์Šต์„ ํ•˜์‹œ๋ฉด ์ด์ „์— ์ž‘์„ฑํ•œ ๊ธ€์„ ์ฐธ๊ณ ๋ฅผ ํ•ด์ฃผ์„ธ์š”.

 

[Linux] ๋ฆฌ๋ˆ…์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž + ๊ธฐ๋ณธ ๋ช…๋ น์–ด

์ฒ˜์Œ ๋ฆฌ๋ˆ…์Šค์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋œ ๊ฑด ์–ด๋ฆด ๋•Œ ์˜ํ™”์—์„œ ํ•ด์ปค๋ฅผ ๋ณด๋ฉด ๊ฒ€์€ ํ™”๋ฉด์— ์˜์–ด๊ฐ€ ๋น ๋ฅด๊ฒŒ ์˜ฌ๋ผ์˜ค๋Š” ์žฅ๋ฉด์„ ๋ณด๊ณ  ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ดํ›„ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๋ฆฌ๋ˆ…์Šค์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ๊ทธ

pos04167.tistory.com

์ผ๋‹จ ์—ฌ๊ธฐ์„œ๋Š” I๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Insert ๋ชจ๋“œ๊ฐ€ ๋˜๊ณ  ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ณ  ESC์„ ํ•˜๊ณ  :WQ์„ ์ž…๋ ฅํ•˜๋ฉด ์ž…๋ ฅ๋œ ๋‚ด์šฉ์„ ์ €์žฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

Jenkins ๊ฐœ์ธํ‚ค๋ฅผ Jenkins ์‚ฌ์ดํŠธ publish-over-ssh์— ๋“ฑ๋กํ•˜๊ธฐ

 cat ~/.ssh/id_rsa

๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. ์ผ๋‹จ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ์œ„์—

start, end ๋ถ€๋ถ„๋„ ํ•„์ˆ˜์ ์œผ๋กœ ์ž…๋ ฅ์„ ํ•ด์•ผ๋œ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„์„œ 5์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ๋‹ค.

์ดํ›„ ๊ณต๊ฐœํ‚ค๋ฅผ Jenkins ์‚ฌ์ดํŠธ์— ์ถ”๊ฐ€๋ฅผ ํ•œ๋‹ค.

์ด๋•Œ SSH Servers์˜ ๋“ฑ๋กํ•  ๊ฐ 4๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.

Name ๋ณธ์ธ์ด ์‚ฌ์šฉํ•  ์ž„์˜์˜ SSH ์„œ๋ฒ„์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค.
Hostname ์‹ค์ œ๋กœ ์ ‘์†ํ•  ์›๊ฒฉ ์„œ๋ฒ„๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
Username ์ ‘์†ํ•  ์›๊ฒฉ ์„œ๋ฒ„์˜ ์ด๋ฆ„ - whoami๋ฅผ ํ†ตํ•ด ํ™•์ธ ๊ฐ€๋Šฅ
Remote Directory ์›๊ฒฉ์„œ๋ฒ„์—์„œ ์ ‘์†ํ•˜์—ฌ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ pwd ํ™•์ธ

 

DockerHub ์ด๋ฏธ์ง€ ๋“ฑ๋กํ•˜๊ธฐ


 

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

๋„์ปค ํ—ˆ๋ธŒ์— ์ด๋ฏธ์ง€๋ฅผ ๋“ฑ๋ก์„ ํ•œ๋‹ค.

์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ docker image๋ฅผ push ํ•˜๊ณ  ๋“ฑ๋ก์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

docker push mooh2jj/cpu-bound-application-1

 

 

Jenkins Item FreeStyle Project


ํ”„๋ฆฌ์Šคํƒ€์ผ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•˜์—ฌ ์ƒ์„ฑ์„ ํ•œ๋‹ค. 

์ดํ›„ ๋นŒ๋“œ ํ›„ ์กฐ์น˜ > Send build artifacts over SSH๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.

์—ฌ๊ธฐ์„œ Exec command๋ฅผ ์ถ”๊ฐ€๋กœ ์ž…๋ ฅ์„ ํ•œ๋‹ค.

nohup docker run -p 8081:8080 kimmugeon/cpu-bound-applicatoin-1:tag > /dev/null 2>&1 &
์ด๋•Œ tag๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ ๋งŽ์€ ์‹ค์ˆ˜๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ 8081์€ Work ์ธ์Šคํ„ด์Šค์˜ ํฌํŠธ์ด๋‹ค. ์ด ๊ฒฝ์šฐ์—๋„ ์œ„์—์„œ ํ–ˆ๋˜ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ์„ค์ •์„ ํ•ด์•ผ๋œ๋‹ค. 

์ดํ›„ ๋นŒ๋“œ๋ฅผ ํ•˜๊ณ  Console Output์„ ํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ๋ ฅ์ด ๋œ๋‹ค. ์ดํ›„ Work ์ธ์Šคํ„ด์Šค์˜ ํƒ„๋ ฅ์  IP๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™•์ธ์„ ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ์ด ๋œ๋‹ค.

์ดํ›„ ์„ฑ๊ณต์ ์ธ ๋กœ์ง์ด ๋™์ž‘ํ•œ๋‹ค.

 

์ดํ›„ ์ถ”๊ฐ€์ ์ธ log ํ™•์ธํ•˜๊ธฐ


# ๊ผฌ๋ฆฌ๋ถ€ํ„ฐ ๋ณด๋Š” ๋ช…๋ น์–ด
# docker contrainer์—์„œ ํ™•์ธ์‹œ, docker exec ๋ช…๋ น์–ด๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค.
cd ~
tail -f nohup.out

 

์ถ”๊ฐ€


 

 

Jeinkins/Docker ๋ช…๋ น์–ด๋กœ FreeStyle publish-over-ssh ๋ฐฐํฌํ•˜๊ธฐ

๋‘๊ฐ€์ง€ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.ํ•˜๋‚˜๋Š” ์‹ค์ œ ๋ฐฐํฌ๋˜์–ด์„œ ๋‚˜์˜ค๋Š” worker-instance,๋‚˜๋จธ์ง€๋Š ํ•˜๋‚˜๋Š” jenkins๊ฐ€ ์„ค์น˜๋œ jenkins-instace์ด๋‹ค.worker-instance์—๋Š” ๋„์ปค๋ฅผ ์„ค์น˜ํ•œ๋‹ค.์šฐ๋ถ„ํˆฌ ๋ฒ„์ „์— ๋„์ปค ์„ค์น˜๋Š” ๋‹ค์Œ ๋ช…

velog.io

 

Jenkins๋ฅผ ํ™œ์šฉํ•œ SpringBoot gradle ๋นŒ๋“œ&๋ฐฐํฌ

์ƒˆ๋กœ์šด Item > ํ”„๋กœ์ ํŠธ๋ช… docker-jenkins-github-test์œผ๋กœ.Freestyle project๋กœ ํ•ด๋†“์•˜๋‹ค.์†Œ์Šค์ฝ”๋“œ๊ด€๋ฆฌ > GitRepositroy URL -> ๋ฐฐํฌํ•  ํ”„๋กœ์ ํŠธ URL ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค.๊ทธ๋‹ค์Œ Add build step์„ ๋ˆŒ๋Ÿฌ Invok

velog.io

 

Docker/Jenkins๋ฅผ ํ™œ์šฉํ•œ ์›น์„œ๋ฒ„ ์ž๋™ ๋ฐฐํฌ & Docker Image ์ž๋™ ๋ฐฐํฌ

Docker with SpringBoot ์ด๋ฒˆ์—๋Š” Spring Boot๋กœ ์ž‘์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ Jenkins์™€ Docker๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ EC2์— ์ž๋™ ๋ฐฐํฌํ•  ์˜ˆ์ •์ด๋‹ค. Docker image๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ์— ์•ž์„œ ๊ทธ ์ด๋ฏธ

junghwanta.tistory.com

 

๋ฐ˜์‘ํ˜•