며칠동안 이 오류 때문에 막혀서 빌드를 못하고 있었는데
생각보다 너무 심플한 이유였기에 공유를 합니다..

오류 상황
ApplicationTests > contextLoads() FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at ConstructorResolver.java:800
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at ConstructorResolver.java:800
Caused by: org.springframework.beans.factory.BeanCreationException at AutowiredAnnotationBeanPostProcessor.java:489
Caused by: java.lang.IllegalArgumentException at PropertyPlaceholderHelper.java:180
1 test completed, 1 failed
여기서 주목해야 될 건 IllegalArgumentException at PropertyPlaceholderHelper
말그대로 어떤 property를 불러오지 못했기 때문에 줄줄이 발생한 오류이다.
데이터베이스 연결도 문제없이 되어있고 spring boot와 java, gradle과의 버전도 공식 문서를 통해 봤을 때 모두 호환되는 상태이다. 대체 뭘 못 불러왔다는 걸까?
그때 불현듯 떠오른 나의 환경변수들...

그렇다. 문제는 나의 환경변수들에 대해서 Github action에서는 그 값을 알 수 없기 때문에 빌드 오류가 계속 났던 것이다!
intellij를 통해 spring boot 개발을 하고 있기에 edit configuration을 통해 필요한 환경변수들을 모두 주입해준 상태였다.
당연히 github action을 통해 빌드할 때도 넣어주어야 하는 것..
해결 방법
STEP1. GitHub Secrets 설정
Github 프로젝트>Settings>Secrets and variables>Action
여기서 [New repository secret]를 클릭해 필요한 환경변수들을 정의해준다!
STEP2. workflow 파일(.yml)에 추가
GitHub Actions 워크플로 파일(예: .github/workflows/ci.yml)에서 환경 변수를 사용하도록 설정한다.
env 영역에 정의한 환경변수들을 작성해주면 끝!
jobs:
build:
runs-on: ubuntu-latest
env:
GOOGLE_CLIENT_ID: ${{secrets.GOOGLE_CLIENT_ID}}
GOOGLE_CLIENT_SECRET: ${{secrets.GOOGLE_CLIENT_SECRET}}
JWT_SECRET: ${{secrets.JWT_SECRET}}
나와 같은 고통을 겪고 있는 사람들을 위해 글을 작성했다..
항상 환경변수 꼭 체크해주기는 필수인 것 같다!