[JoyMall] SpringBoot 3 버전 GitHub Action CI 환경에서 redis 연결 에러 해결 방법

청포도봉봉이·2024년 7월 1일
1

JoyMall

목록 보기
5/13
post-thumbnail

코드는 GitHub에 있습니다.

상황

  1. 분산 락을 적용하고 클라우드 redis를 설정 파일에서 연결하였습니다.
  2. 로컬 환경에서는 전체 테스트가 성공하는데 빌드 환경에서 지속적으로 실패하였습니다.

위와 같은 에러가 계속 났습니다. 위 에러를 보면 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

profile
서버 백엔드 개발자

0개의 댓글