Project/Afternote

[Github Action] CI/CD 적용기

gyuun365 2026. 4. 5. 19:08

일단 CI/CD 얘기를 하기전에 나는 로컬에서도 docker-compose를 사용해서 켰었다. 하지만 이것의 문제점은 빌드하는데 시간이 너무 오래걸린다는 단점이 있어서 이번 기회에 local / prod 로 나눠서 구분을 하기로 했다.

Local/prod 분리

공통 설정과 환경별 설정을 분리했는데, application.yml 에는 환경에 상관없이 공통으로 쓰는 값을 넣어놨다.

ex ) 메일,jwt, cors기본값, 서버 포트 기본값, gemini, s3 등등

 

나머지는 환경별 설정으로 application-local.yml 과 application-prod.yml로 분리해서 빼놨고,
SPRING_PROFILES_ACTIVE=local 또는 prod로 선택해서 빌드할 수 있다.


또한 아키텍쳐 구조도 살짝 달라졌다. 

Local에서는 더 이상 docker-compose 로 서버까지 감싸지 않는다. DB와 Redis만 docker 로 묶어서 돌리고 intellij에 환경변수를 넣어놓고 실행되게 만들었다.

Prod에서는 기존 방식인데, docker-compose로 server,redis,nginx를 묶어서 돌리고 DB는 RDS를 이용한다. 

 

CI

  • 소스 체크아웃
  • Java 17 세팅
  • Gradle 빌드
  • DockerHub 로그인
  • linux/amd64로 이미지 빌드 후 latest 태그로 push

CD

  • EC2 접속 후 ~/deploy 이동
  • 필수 파일/디렉토리 존재 체크
    • .env
    • docker-compose.yml
    • nginx
  • 불필요 이미지 prune

등이 있다고 생각하면 된다. 당연히 EC2 정보 등은 git actions 안에 넣어놨다.