현재 상황
웨일던 프로젝트를 리팩토링하면서 Redis를 추가했고 @SpringBootTest를 이용해서 RedisRepository에 대한 테스트 코드를 작성했습니다.
이 어노테이션을 이용해서 테스트를 한다면 Mocking 객체가 아닌 실제 RedisRepository Bean을 이용해서 테스트가 진행됩니다. 이후 Merge를 위해 github에 push 했습니다!
빌드 실패
현재 Github action을 이용해서 CICD가 동작되는데, 도중에 CI Workflow가 실패했다고 메일이 왔습니다.
올해 초에 겪은 일이라 바로 원인을 찾았습니다.
https://bbeomgeun.tistory.com/166
[SpringBoot] Error - java.net.SocketTimeoutException at PlainSocketImpl
상황 - CI 작업을 위해서 프로젝트에 github action을 연동하던 중 마주친 에러. - build 중 테스트가 돌아가면서 에러가 나버린다. - 프로젝트의 datasource는 RDS mysql database를 연결해둔 상태였다. 발생한.
bbeomgeun.tistory.com
github action script가 실행되는 가상 환경에 Redis가 실행되지 않았기에 실제 Redis를 이용해서 돌아가는 테스트 코드가 연결이 되지 않아 실패가 되었던 것입니다.
따라서 저는 redis server start flow를 script에 추가해줬습니다
https://github.com/marketplace/actions/redis-server-in-github-actions
Redis Server in GitHub Actions - GitHub Marketplace
Start a Redis server
github.com
- name: Start Redis
uses: supercharge/redis-github-action@1.1.0
with:
redis-version: 6
그냥 빌드 전에 환경 세팅하는 순서 아무 곳에 집어넣었습니다. 전 MySQL 세팅 이후에 추가했습니다.
해결
실행되는 github action 가상 환경에 Redis를 추가함으로써 테스트가 통과하고 잘 배포가 되는 것을 확인할 수 있었습니다.
'개발 공부 > 스프링' 카테고리의 다른 글
[SpringBoot X AWS S3] AWS S3 PresigendURL 적용하고 업로드해보기 (1) | 2022.10.11 |
---|---|
[Junit5, Mockito] Mockito를 이용해서 Void 메서드 Mocking하기 (0) | 2022.10.05 |
[SpringBoot x JPA] Soft Delete #1 Select (해당 Status 조건 추가 조회 방법) - @Where (1) | 2022.09.11 |
[SpringBoot x JPA] List 초기화에서 Builder 패턴 사용 시 NullPointerException (0) | 2022.08.08 |
[SpringBoot] response.sendRedirect(url)가 동작하지 않는 경우 (0) | 2022.07.09 |