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 속성을 사용하여 클래스를 지정해줬다.

이렇게 지정해놓으면 지정해 놓은 클래스가 빈으로 등록된다.