Project/티켓 예매 서비스
[CI 빌드 에러] 빌드 시 발생했던 에러들 해결
hu6r1s
2024. 4. 11. 14:56
1. Redis가 없어 발생하는 에러
Github Actions를 통해 CI를 구축하고 테스트 코드가 실패가 됐었다.
로컬에서 테스트 코드가 성공인 것을 확인했고 PR를 날렸는데 빌드 과정에서 테스트가 실패한다고 발생한다.
알아보니 해당 테스트 코드는 Redis를 사용하는데 github workflow에서 redis가 실행되지 않아 발생하는 문제였다.
그래서 CI 스크립트에 Redis를 실행할 수 있도록 해줬다.
jobs:
build:
name: CI
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
environment: development
services:
redis:
image: redis
ports:
- 6379:6379
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set Application Test Property
run: |
touch ./src/test/resources/application-test.properties
echo "${{ secrets.APPLICATION_TEST_PROPERTIES }}" > ./src/test/resources/application-test.properties
cat ./src/test/resources/application-test.properties
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew clean build
이렇게 redis 이미지를 받아와서 연결해주고 나니 빌드가 정상적으로 동작하였다.
2. contextLoads() 에러
빌드를 하니 이렇게 contextLoads()가 실패한다고 나왔다.
구글링을 엄청했는데 hibernate와 관련된 에러인 줄 알고 엄청 찾았다가 나온 방법들을 거의 다 해봤다.
결국 찾은 해결법은 `@SpringBootTest` 어노테이션에 classes 속성을 사용하여 클래스를 지정해줬다.
이렇게 지정해놓으면 지정해 놓은 클래스가 빈으로 등록된다.