3.1.2 CI/CD 적용 전의 상태

윤희빈·2026년 8월 20일

AWS CI/CD 구축

목록 보기
13/25
post-thumbnail

Spring Boot 세팅

1.프로젝트 시작

종속성은 spring boot devtoolsspring web

2.간단한 컨트롤러 코드 짜기

  • AppController
@RestController 
public class AppController {
	@GetMapping("/")
    public String home() {
    	return "Hello, world"
    }
}

3.Github에 프로젝트 올리기

  • 이번에는 public이 아니라 private repository로 실습하겠다.


EC2 세팅

1.EC2 구성하기

  • 이때 프리티어인 t2.micro로 인스턴스를 생성하게 되면 메모리 부족으로 CI/CD 중에 EC2가 멈출 수도있다.
  • 따라서 t3a.small로 인스턴스를 생성한다.
  • 만약 비용문제로 프리티어인 t2.micro로 실습하고 싶다면 아래 링크를 활용한다.
    Swap Memory 관련 포스트

2.보안그룹에 8080 포트 열기

스프링부트 (8080)에 연결해야하므로 설정한다.

이제 인스턴스를 실행한다!

빌드

1.EC2에 JDK 설치

  • 인스턴스에 접속한다.

    당연히 키페어를 이용해서 터미널에서 접속할수도 있다.
sudo apt update
sudo apt install openjdk-17-jdk -y

java -version

2.Git clone으로 EC2에 프로젝트 다운받기

git clone {git repositroy clone 주소}


private 리파지토리이기 때문에 내 깃허브 계정으로 로그인해야한다!
이때, 실제 github의 비밀번호가 아니라 github 토큰을 입력해야 한다!
github 토큰 관련 포스트

3.EC2에서 clone받은 서버가 잘 작동하는지 확인하기

$ cd {프로젝트 경로}
$ ./gradlew clean build
$ cd build/libs
$ nohup java -jar ________.jar & #그 이후에 엔터

$ sudo lsof -i:8080 # 8080번 포트에 실행중인 프로세스(스프링부트)가 무엇인지 확인



코드 수정후 재빌드하기

1.코드 수정

  • 이번엔 "Hello, World!"를 "Hi, World!"로 수정해서 커밋했다.

2.재빌드하여 배포

  • 이제 다시 EC2에서 이전에 빌드한 프로세스를 종료하고 새로 깃클론 받은 코드를 빌드하여 실행해야한다.
$ cd {프로젝트 경로}
$ git pull origin main

$ sudo lsof -i:8080 # 8080번 포트에 Spring Boot가 실행되고 있는 지 확인
$ sudo fuser -k -n tcp 8080 # 8080번 포트에 실행되고 있는 프로세스 종료
$ ./gradlew clean build
$ cd build/libs
$ nohup java -jar ________.jar &

위 스샷에서 pull이 아니라 clone을 했다... 이렇게 하면안됩니다.
아래가 맞는 스샷임.

정리

  1. 내 컴퓨터에서 새로운 코드 작성
  2. commit 한 뒤에 Githup에 push
  3. EC2에서 git pull 받기
  4. 빌드후 재배포

이 과정이 너무너무 귀찮다. -> cicd를 사용한다!!
다음 포스트에서 본격적으로 적용해본다.

Github 인증 과정 생략하기

배포할때마다 일일히 인증을 하면 배포를 자동화할 수 없다.
-> 최초 1회만 인증하게 해보자!

$ git config --global credential.helper store
$ git pull origin main
# Github 계정 및 비밀번호 입력

$ git pull origin main # 더 이상 비밀번호를 안 묻는 걸 확인할 수 있다. 

참고자료

이렇게하면 ~/.git-credentials에 로그인 정보를 저장해둠으로써 github 계정과 비밀번호를 따로 묻지 않는 방식이다. 이 방식의 단점은 EC2에 접근할 수 있는 모든 사용자가 내 Github 정보를 볼 수 있다는 점이 단점이다.
물론 이후 토큰은 삭제했다.

profile
비니비니히비니의 정리블로그

0개의 댓글