Spring Boot 프로젝트에 CI/CD 구축

YeJin Lee·2024년 9월 30일

Spring Boot

목록 보기
4/11

CI/CD 입문 실전 - 2.1.Spring Boot 프로젝트에 CI/CD 구축(개인 프로젝트용)

전체적인 흐름

장점

  • git pull을 활용해서 변경된 부분의 프로젝트 코드에 대해서만 업데이트 하기 때문에 CI/CD 속도가 빠르다.
    • 대부분의 CI/CD 방식들은 전체 프로젝트를 통째로 갈아끼우는 방식을 사용한다.
  • CI/CD 툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다.

단점

  • 빌드 작업을 EC2에서 직접 진행하기 때문에 운영하고 있는 서버의 성능에 영향을 미칠 수 있다.
  • Github 계정 정보가 해당 EC2에 저장되기 때문에 개인 프로젝트 또는 믿을만한 사람들과 같이 진행하는 토이 프로젝트에서만 사용해야 한다.

이 방법은 언제 주로 쓰는지

  • 주로 개인 프로젝트에서 CI/Cd를 심플하고 빠르게 적용시키고 싶을 때 적용한다.

1. Intelli J 프로젝트 및 Github repository 생성

2. AWS 계정 생성

3. AWS EC2 세팅

3-1. OS 이미지 선택

3-2. 인스턴스 선택

t3a.small(instance) 선택 이유
Spring Boot가 무겁기 때문이다.

t2 micro swap을 활용하여 가상 메모리를 늘리는 방법도 있다.

3-3. 보안그룹 인바운드 8080 포트 추가

4. JDK 설치

JDK란?
Java 프로그램을 개발하기 위해 필요한 도구 모음
자바 개발 캐트(Java Development Kit, JDK)
자바 애플리케이션을 구축하기 위한 핵심 플랫폼 구성요소

~$ sudo apt update
~$ sudo apt install openjdk-17-jdk -y
~$ java -version
# GitHub repository에 있는 내용을 내 로컬(컴퓨터)에 '복제'하는 명령어
~$ git clone .git

4-a. github 토큰

private으로 된 repository를 다운받으려고 하면 github의 아이디와 비밀번호를 입력하라고 한다. 그런데 이걸 맨날 private에서 public으로 바꿔서 하기엔 너무 귀찮다. 실제로도 그렇게 어렵지 않다. 5분만 참으면 하루가 편해진다.

5. build

home/ubuntu/project
$ ./gradlew clean build # spring boot build 명령어

Error
-bash: ./gradlew: Permission denied

해결 - 실행 권한 주기

chmod +x ./gradlew

t2.micro에 라이브러리 등의 문제를 해결하려면 SWAP을 사용하면 된다.

home/ubuntu/project/build/libs
nohup java -jar -SNAPSHOT.jar # 배포 명령어
sudo lsof -i:8080 # 배포 확인 명령어 # 8080 포트에서 실행되고 있는 프로세스 알려줘

6. 서버 확인

PublicIPs + : port

7. 코드 수정 후 pull

home/ubuntu/project/build/libs
git pull origin main

8. 서버 닫고 다시 빌드

home/ubuntu/project
sudo fuser -k -n tcp 8080 # tcp 8080 port에서 사용하고 있는 프로세스를 종료하는 명령어
./gradlew clean build #  다시 빌드
# 다시 빌드하는 이유는 새로운 코드로 바꼈고 바뀐 코드로 새로 빌드해야지 업데이트가 되기 때문
home/ubuntu/project/build/libs
nohup java -jar -SNAPSHOT.jar

9. private에서 이름과 token값을 물어보지 않게 설정

home/ubuntu/project
git config --global credential.helper store # 한 번 로그인을 하면 그 값을 저장해놓고 계정과 비밀번호를 입력하지 않아도 된다는 명령어
git pull origin main

10. 문제점 확인

cd ~
ls -a
cat .git-credentials # .git-credentials 파일 읽기

개인정보 토큰값이 열린다는 것이 문제점이다.

profile
안녕하세요, 영문과코딩 입니다.

0개의 댓글