배포 과정에 CI/CD를 적용하지 않았을 때
(1) 스프링 프로젝트를 EC2 서버에 배포하는 과정
sudo apt update
sudo apt install openjdk-17-jdk -y
(java -version)
git clone *****
./gradlew clean build
nohup java -jar ****-SNAPSHOT.jar (build > libs)
(2) 코드 수정이 발생했을 때 재배포하는 과정
git pull orgin main (+ Git 인증)
sudo fuser -k -n tcp 8080 (기존 프로세스 종료)
./gradlew clean build (빌드)
nohup java -jar ****-SNAPSHOT.jar (build > libs) (실행)
코드를 수정할 때 마다 EC2 서버에 접속해서 (2) 번 과정 계속 반복 필요
➡️ 해당 과정을 github Action 에 등록하여 git push 이벤트가 발생할 때 자동으로 pull/빌드/실행 하도록 하기
배포 과정을 Github Actions로 자동화 했을 때
1) 서버에서 Git 인증을 계속 하지 않아도 되도록 credential 등록
git config --global credential.helper store
2) push 가 일어나면 runner 서버에서 EC2 서버에 원격 접속하여 자동 빌드 및 실행 하도록 설정
.github > workflows > deploy.yml 작성
name: Deploy To EC2
on:
push:
branches:
- main
jobs:
Deploy:
runs-on: ubuntu-latest
steps:
- name: SSH로 EC2에 원격 접속하기
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
script_stop: true
script: |
cd /home/ubuntu/spring-server-test
git pull origin main
./gradlew clean build
sudo fuser -k -n tcp 8080 || true
nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 &
- EC2_HOST : EC2 서버의 퍼블릭 주소
- EC2_USERNAME : ubuntu
- EC2_PRIVATE_KEY : 인스턴스 띄울 때 내려받았던 .pem 키 복사하여 secret 으로 등록
실습 테스트
테스트 서버 코드에 변경 사항을 push 했을 때 자동 반영이 되는지 확인 (Hi -> Good 텍스트 변경)
https://github.com/GyeongahNa/spring-server-test/actions/runs/13916355397/job/38940015613


'BE 📙 > 비전공자도 이해할 수 있는 cicd 입문 실전' 카테고리의 다른 글
| CI/CD, Github Actions 기본 개념 (0) | 2025.03.13 |
|---|---|
| 백엔드 CI/CD에 필요한 AWS 지식 (0) | 2025.03.10 |
댓글