Spring project 생성

* 환경: jdk-21, Gradle, vscode 활용

 

vscode에서 ctrl + shift + p (Show all commands) 단축키를 누르고 spring Initializr 를 검색합니다.

원하는 대로 선택 후 프로젝트 생성하면 됩니다.

 

CICD-Test/src/main/java/com/example/cicdtest/resoures 아래 static 폴더 생성 후 index.html 추가

테스트 용도의 간단한 페이지를 하나 생성합니다. (! + enter 치면 기본 html 틀 코드 생성됨)

cd <project-folder>

./gradlew
./gradlew build
./gradlew bootRun

vscode의 bash terminal 위에서 해당 명령어들을 입력해 확인합니다. (http://localhost:8080)

 

해당 프로젝트를 github에 올립니다.

cd <project-folder>

git config --global user.email "~~~"
git init

git add .
git status
git commit -m "~~~"

git remote add origin <github-주소>
git push origin master

 

배포할 EC2 인스턴스 생성

원하는 인스턴스 유형과 키페어, 네트워크 설정(퍼블릭) 후 인스턴스를 생성합니다.

(보안그룹의 경우 ssh(내 IP), 8080(0.0.0.0/0) ,http(0.0.0.0/0) 열어주기)

 

 

수동 배포

아래 명령어들을 EC2 인스턴스 ssh 접속 후 차례로 입력합니다.

sudo yum install git

sudo yum install java-21-amazon-corretto
java -version

sudo timedatectl set-timezone Asia/Seoul

mkdir app
cd ~/app
git clone https://github.com/realyun99/cicd-test.git
cd cicd-test

# gradle clean build
sudo chmod +x gradlew
sudo ./gradlew build

cd build/libs/
java -jar cicd-test-0.0.1-SNAPSHOT.jar

nohup java -jar cicd-test-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
tail -f log.out
tail -f err.out

 

잘 설정되었는지 http://<ec2-public-ip>:8080 으로 확인합니다.

 

현재 수동 배포의 명령어들을 스크립트로 짜보려고 합니다.

 

배포 스크립트 생성

위에서 git clone을 받았던 /app/git 폴더로 들어가 deploy.sh 파일을 생성한 후 아래의 스크립트를 넣어줍니다.

#!/bin/bash

REPOSITORY=/home/ec2-user/app
cd $REPOSITORY/cicd-test/

echo "> Git Pull"
git pull

echo "> 프로젝트 Build 시작"
./gradlew build

echo "> Build 파일 복사"
cp ./build/libs/*.jar $REPOSITORY/

echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f cicd-test)

echo "$CURRENT_PID"

if [ -z $CURRENT_PID ]; then
    echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
    echo "> kill -2 $CURRENT_PID"
    kill -9 $CURRENT_PID
    sleep 5
fi

echo "> 새 어플리케이션 배포"
JAR_NAME=$(ls $REPOSITORY/ |grep 'cicd-test' | tail -n 1)

echo "> JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME &

 

아래의 명령어를 통해 스크립트를 실행합니다.

cd /app/git/cicd-test
sudo chmod +x gradlew

cd /app/git
sudo chmod 755 ./deploy.sh
./deploy.sh

여기까지 다 적용했다면 현재까지 구현된 기능은 아래와 같습니다.

1) 코드 수정 후 git push

2) ec2 접속 후 deploy.sh 실행 → 코드 배포

'Toy Project' 카테고리의 다른 글

[CI/CD] EC2 CodePipeline Test -3  (0) 2024.03.25
[CI/CD] EC2 CodePipeline Test -2  (1) 2024.03.19

+ Recent posts