코드는 GitHub에 있습니다.
위와 같은 에러가 계속 났습니다. 위 에러를 보면 Redis 서버 접속에 실패했다고 나옵니다.
SpringBoot 3 버전은 테스트 실행 시 자동 구성을 통해 Redis 서버가 띄워져 있지 않아도 테스트에 성공할 수 있습니다. 하지만 CI 환경에서는 계속 Redis 서버에 연결하려고 하는게 잘 이해가 안되더라고요..
home brew로 설치한 redis가 계속 실행되고 있어서 테스트에 성공했던거였습니다.. ㅠㅠ 삽질했네요..
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.3'
id 'io.spring.dependency-management' version '1.1.4'
}
application.yaml
server:
port: 8081
spring:
profiles:
active: ${SPRING_PROFILES_ACTIVE:test}
---
spring:
config:
activate:
on-profile: test
# ...
data:
redis:
host: localhost
port: 6379
---
spring:
config:
activate:
on-profile: dev
# ...
data:
redis:
host: localhost
port: 6379
---
spring:
config:
activate:
on-profile: prod
# ...
data:
redis:
host: ${JOY_MALL_REDIS_URL}
port: 6379
저는 Spirng 3.x.x 버전과 Java 17 버전을 사용 중입니다. CI 도구로는 GitHub Action을 사용 중입니다.
해결 방법은 매우 매우 간단합니다.. 삽질한 시간에 비해 너무 아까웠습니다.. ㅠㅠ
GitHub Action의 장점 중 하나는 워크플로우 입니다.
워크 플로우는 redis 서버 다운 후 실행, ssh 연결 등의 기능들을 손쉽게 이용할 수 있습니다.
https://github.com/marketplace?type=actions
누구나 만들 수 있고 사용 방법도 아주 간단합니다!
그래서 저는 Redis 서버를 CI 환경에서 redis 서버를 띄우는 워크 플로우를 이용했습니다.
https://github.com/marketplace/actions/redis-server-in-github-actions
위 링크의 readme.md를 보고 빌드 스크립트에 추가해줍니다.
- name: Start Redis
uses: supercharge/redis-github-action@1.1.0
with:
redis-version: 6
위 스크립트를 추가하고 다시 빌드를 해보면
Redis 서버를 정상적으로 실행합니다. (Docker를 이용해 서버를 띄웁니다!)
빌드도 성공하고 전체 빌드 스크립트도 성공을 했습니다.
SpringBoot 2 버전을 사용 중이시라면
https://jojoldu.tistory.com/297 여기서 해결 방법을 얻으실 수 있을겁니다!
참고
https://jojoldu.tistory.com/297
https://bbeomgeun.tistory.com/181?category=1051782