๐Ÿ“Œ Jenkins + Spring Boot ์ž๋™ ๋ฐฐํฌ ์‹ค์Šต ์ •๋ฆฌ

My Pale Blue Dotยท2025๋…„ 5์›” 29์ผ

AWS

๋ชฉ๋ก ๋ณด๊ธฐ
3/4
post-thumbnail

๐Ÿ“… 2025-05-28

๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

โœ… 1. Jenkins ์„ค์น˜ (Amazon Linux / CentOS ๊ธฐ์ค€)

sudo wget -O /etc/yum.repos.d/jenkins.repo <https://pkg.jenkins.io/redhat-stable/jenkins.repo>
sudo rpm --import <https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key>
sudo yum upgrade -y
sudo yum install -y fontconfig jenkins

โœ… 2. Jenkins ํฌํŠธ ๋ณ€๊ฒฝ (8080 โ†’ 9090)

sudo vi /lib/systemd/system/jenkins.service
# 70~72์ค„: 8080 โ†’ 9090 ์ˆ˜์ •
sudo systemctl daemon-reload
sudo systemctl start jenkins
sudo systemctl status jenkins
  • ๋ธŒ๋ผ์šฐ์ € ์ ‘์†: http://[EC2-IP]:9090
  • ์ดˆ๊ธฐ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ:
cat /var/lib/jenkins/secrets/initialAdminPassword

โœ… 3. /tmp ๊ณต๊ฐ„ ๋ถ€์กฑ ๋ฌธ์ œ ํ•ด๊ฒฐ (Jenkins ๊ฒฝ๊ณ  ์ œ๊ฑฐ)

sudo vi /etc/fstab

์ถ”๊ฐ€:

tmpfs   /tmp    tmpfs   size=5g,mode=1777   0   0
sudo mount -a
# ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ์žฌ๋ถ€ํŒ…
sudo reboot

โœ… 4. Jenkins ํˆด ์„ค์ •

โ˜‘๏ธ JDK (์ˆ˜๋™ ๋“ฑ๋ก)

alternatives --config java
# ์˜ˆ: /usr/lib/jvm/java-21-amazon-corretto.x86_64/

Jenkins > Global Tool Configuration > JDK
โ†’ ์ž๋™ ์„ค์น˜ โŒ ํ•ด์ œ, ์œ„ ๊ฒฝ๋กœ๋ฅผ JAVA_HOME์— ์ˆ˜๋™ ์ž…๋ ฅ

โ˜‘๏ธ Gradle (์ž๋™ ์„ค์น˜)

  • Version: 8.14
  • Spring Boot ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ gradle-wrapper.properties ํ™•์ธ ํ›„ ์ผ์น˜์‹œํ‚ด

โœ… 5. ํ•„์ˆ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

  • Gradle Plugin
  • GitHub Integration
  • Post Build Task

โœ… 6. GitHub ์—ฐ๋™ ์„ค์ •

  1. GitHub โ†’ Settings > Developer Settings > Personal Access Token (classic)
  2. Jenkins > Credentials โ†’ Add โ†’ Kind: Secret Text โ†’ ํ† ํฐ ๋ถ™์—ฌ๋„ฃ๊ธฐ
  3. Jenkins > Configure System > GitHub Servers โ†’ ๋“ฑ๋ก

โœ… 7. Freestyle ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ค์ •

  • Jenkins ๋Œ€์‹œ๋ณด๋“œ โ†’ New Item โ†’ Freestyle project
  • GitHub Project ์ฒดํฌ โ†’ GitHub ์ฃผ์†Œ ์ž…๋ ฅ
  • ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ: Git โ†’ URL ์ž…๋ ฅ
  • Build Steps: Invoke Gradle Script
    • Gradle Version: 8.14
    • Tasks:
clean build

โœ… 8. ๋นŒ๋“œ ๋ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

  • Console Output์—์„œ ๋นŒ๋“œ ๋กœ๊ทธ ํ™•์ธ
  • ๋ฌธ์ œ ์‚ฌ๋ก€: gradlew๊ฐ€ ํ•˜์œ„ ํด๋”์— ์žˆ์–ด ๋นŒ๋“œ ์‹คํŒจ
  • ํ•ด๊ฒฐ: ๊ตฌ์กฐ ์ˆ˜์ • ๋˜๋Š” Jenkins ์„ค์ • ๋ณ€๊ฒฝ โ†’ ์žฌ๋นŒ๋“œ ์„ฑ๊ณต

โœ… 9. ๋นŒ๋“œ ํ›„ ์ž๋™ ๋ฐฐํฌ (Post-build Task)

Jenkins > ๊ตฌ์„ฑ > ๋นŒ๋“œ ํ›„ ์กฐ์น˜ โ†’ Post build task โ†’ ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ๋ก

#!/bin/bash
JAVA_COMMAND="java -jar"
JAR_PATH="/var/lib/jenkins/workspace/DEPLOY_TEST_SPRINGONLY/build/libs/demo-0.0.1-SNAPSHOT.jar"
TARGET_PID=$(pgrep -f "$JAVA_COMMAND $JAR_PATH")

if [ -z "$TARGET_PID" ]; then
    echo "ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฏธ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
else
    echo "ํ”„๋กœ์„ธ์Šค $TARGET_PID ์ข…๋ฃŒ ์ค‘..."
    kill -9 "$TARGET_PID"
    if ps -p "$TARGET_PID" > /dev/null; then
        echo "์ข…๋ฃŒ ์‹คํŒจ"
    else
        echo "์ข…๋ฃŒ ์„ฑ๊ณต"
    fi
fi

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ (๋กœ๊ทธ ํŒŒ์ผ ๋ถ„๋ฆฌ ์ €์žฅ)
nohup java -jar $JAR_PATH > /var/log/springboot-app.log 2>&1 &

๐Ÿ“ ์ฐธ๊ณ : /var/log/springboot-app.log ์— ๋กœ๊ทธ ์ €์žฅ๋จ


โœ… ๋ณด์•ˆ ์„ค์ • ๊ถŒ์žฅ์‚ฌํ•ญ

  • Jenkins ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ ๊ด€๋ฆฌ์ž ๊ณ„์ •์€ ๊ฐ•๋ ฅํ•œ ํŒจ์Šค์›Œ๋“œ๋กœ ์„ค์ •
  • EC2 ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์—์„œ 9090 ํฌํŠธ๋Š” ๋ณธ์ธ IP๋กœ ์ œํ•œ ๊ถŒ์žฅ
  • GitHub ํ† ํฐ์€ ๊ผญ Secret text๋กœ ์ €์žฅํ•˜๊ณ , ์ ˆ๋Œ€ ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜

๐Ÿ”Œ ํฌํŠธ ์ •๋ฆฌ

ํฌํŠธ์šฉ๋„์„ค๋ช…
8080Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์‚ฌ์šฉ์ž ์ ‘๊ทผ (์„œ๋น„์Šค ํฌํŠธ)
9090Jenkins ์›น UI์šด์˜์ž ์ ‘์†์šฉ CI ๊ด€๋ฆฌ ํฌํŠธ

๐Ÿ”— ์ฐธ๊ณ  ๋งํฌ


๐Ÿ˜Ž ๋А๋‚€ ์ 

  • ๋‹จ์ˆœํžˆ Jenkins๋งŒ ์„ค์น˜ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, CI/CD์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ „์ฒด๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฑธ ์ฒด๊ฐํ–ˆ๋‹ค.
  • Gradle ์ž๋™ ์„ค์น˜, GitHub ํ† ํฐ ์ธ์ฆ, ๋กœ๊ทธ ๊ฒฝ๋กœ ๊ด€๋ฆฌ ๋“ฑ ์šด์˜์ž ์ž…์žฅ์—์„œ ๋†“์น˜๊ธฐ ์‰ฌ์šด ๋””ํ…Œ์ผ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํŠนํžˆ Post-build ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•œ ์ž๋™ ๋ฐฐํฌ๋Š” ์ •๋ง ๋ฟŒ๋“ฏํ–ˆ๋‹ค!

๐Ÿงพ ์š”์•ฝ

  • Jenkins ์„ค์น˜ ๋ฐ ํฌํŠธ ๋ณ€๊ฒฝ โ†’ GitHub ์—ฐ๋™ โ†’ Gradle ๋นŒ๋“œ โ†’ ์ž๋™ ์žฌ๋ฐฐํฌ๊นŒ์ง€ ์‹ค์Šต ์™„๋ฃŒ
  • Jenkins๋Š” 9090, Spring Boot๋Š” 8080 ํฌํŠธ ์‚ฌ์šฉ
  • ์ž๋™ ๋ฐฐํฌ ์‹œ ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ํ›„ ์ƒˆ๋กœ์šด JAR ์‹คํ–‰
  • ๋กœ๊ทธ ํŒŒ์ผ ๊ด€๋ฆฌ, ๋ณด์•ˆ ์„ค์ •๊นŒ์ง€ ํฌํ•จ๋œ ์‹ค์Šต ์™„๋ฃŒ

profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€