Github Action Gradle CI Issue (feat. Git Submodule)

기록의 습작·2023년 5월 15일
0

사이드 프로젝트 진행 중 만난 Github Action CI 이슈...

작성한 테스트 코드를 PR 에서 돌리고, 결과 리포트를 보여주기 위한 간단한 CI 였는데 이게 나를 괴롭힐 줄은 상상도 못했다.

다신 똑같은 이슈로 시간 보내지 않도록 처음부터 하나하나 정리해보자.


  1. Gradlew Issue

처음으로 나를 당황시켰던 이슈였다.

./gradlew clean test

이 명령어가 그냥 동작 자체를 하지 않는 것이다.
하지만 이 문제는 크게 오래 걸리지 않았다.
gradle-wrapper 관련 파일들에 무슨 문제가 있나 싶어 새로 갈아끼웠더니 바로 해결되었다.


  1. Test Failed

그 다음 나온 이슈는 ApiApplicationTests 클래스의 contextLoads() 가 계속 실패하였다.
단순히 저렇게만 나오니 뭐가 문젠지 모르겠어서

./gradlew clean test -i

-i 옵션을 통해 로그를 같이 확인해보았다.

Caused by:
        org.springframework.beans.factory.BeanCreationException: Error creating bean with name 's3Config': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'cloud.aws.credentials.accessKey' in value "${cloud.aws.credentials.accessKey}"

갑자기 등장한 S3Config 를 보고 멍하니 뇌정지가 찾아왔다...
전혀 예상하지 못한 친구의 등장으로 당황하긴 했지만 흠.. 설정 정보를 가지고 오지 못하는 것 같다.
Yml 에는 잘 설정되어 있구, Profile 설정도 잘 되어있는데 왜 설정 정보를 못가지고 오는걸까?


  1. Git Submodule

현재 사이드 프로젝트에선 설정파일 관리를 Git Submodule 를 통해 하고 있다.
빌드과정에서 Git Submodule 의 Yml 파일들을 가져와 프로젝트를 실행시킨다.
로컬에선 분명 잘 가져오던 파일들이 CI가 돌 때 못 가져 오는건가? 싶어서 Git Submodule CI 와 관련된 내용들을 리서치 해보니 private repo를 clone 할 수 있는 GitHub Key를 추가해야 제대로 가져올 수 있다는 내용을 발견했다.

- name: Checkout repo
  uses: actions/checkout@v3
    with:
      token: ${{ secrets.GITHUB_TOKEN }}
      submodules: true

해당 설정을 추가해주니...

드디어 CI가 잘 동작하는 걸 확인할 수 있었다..!

profile
GyUL의 Backend 개발일기

0개의 댓글