Github Actions 배포 중 YAML 설정 중복으로 Spring Boot 부팅 실패한 문제 해결기

송현진·2025년 4월 13일
0

Spring Boot

목록 보기
13/23

⚠️ 문제 상황

GitHub Actions를 통해 EC2에 배포할 때마다 application-secret.yml 파일을 echo 명령으로 만들어 설정을 생성하고 있었다. 그런데 매번 덮어쓰는 게 아니라 >> 연산자를 사용하다 보니, 같은 spring: 키가 계속 아래로 누적되며 파일이 커지고 중복된 YAML 키가 생기게 됐다.

결국 Spring Boot 실행 시 다음과 같은 오류가 발생했고, 앱은 부팅 직후 종료되었다 이 중복된 키로 인해 Spring Boot 애플리케이션 실행 시 다음과 같은 에러가 발생했다.

org.yaml.snakeyaml.constructor.DuplicateKeyException: found duplicate key spring

결국 앱이 부팅 직후 종료되는 현상이 반복적으로 발생했다

🔍 원인 분석

>>는 기존 파일이 존재하면 그 끝에 이어붙이는 연산자이다. 이 때문에 배포할 때마다 같은 설정 내용이 계속 덧붙여졌고, 그 결과 application-secret.yml 파일 안에는 중복된 spring: 키가 생겼다. YAML은 중복된 키를 허용하지 않기 때문에 Spring Boot는 실행 도중 파싱 에러를 발생시켰고, 정상 부팅이 되지 못했다.

spring:
  ...
spring:  # 중복 발생
  ...

🛠️ 해결 방법

CI/CD 파이프라인에서 application-secret.yml을 작성하기 전에 기존 파일을 먼저 삭제하도록 명령어를 추가했다.

rm -f /home/ec2-user/application-secret.yml

이제는 매번 배포 시 기존 설정 파일을 삭제한 뒤 새로 생성되기 때문에 중복 키 문제 없이 Spring Boot 애플리케이션이 정상적으로 실행되게 되었다.

📝 배운점

처음엔 단순한 설정 실수라고 생각했지만, CI 환경에서 자주 발생할 수 있는 덮어쓰기 문제라는 걸 다시 한 번 느꼈다. 자동화 환경에서는 기존 파일을 명시적으로 삭제하거나, 덮어쓰는 방식으로 만드는 게 정말 중요하다는 걸 배웠다.

다행히 Spring Boot가 명확하게 에러 로그로 DuplicateKeyException을 출력해준 덕분에 빠르게 문제를 해결할 수 있었다. CI/CD에서는 작은 디테일 하나가 전체 배포 흐름을 망가뜨릴 수 있다는 걸 느낄 수 있는 시간이었다.

profile
개발자가 되고 싶은 취준생

0개의 댓글