root layout

패스트캠퍼스

  1. 강의 질문
  2. 프로그래밍

Jenkins에서 pointBalanceSyncJob을 실행 시켰을때 redis와 연결이 안되는 에러가 발생합니다.

2025.04.24 22:20 수정

안녕하세요

Part 4. 실시간 적립금 조회 시스템 구축

Ch 4. Spring Batch를 활용한 배치처리

04. Jenkins를 활용한 배치 작업 스케줄링 및 모니터링 부분 강의를 수강 중입니다.


해당 강의에서

docker-compose.yml 을 실행 시키고

localhost:8888 로 접속해서 jenkins 로 로그인해서

pipeline으로 pointBalanceSyncJob 을 생성 했습니다.

그런데 에러가 발생했습니다.


우선 참고로 pipeline 스크립트는 다음과 같습니다.

(코드 블럭에 복붙이 안먹어서 그냥 코드블럭 없이 보여 드립니다.)

참고로 자꾸 왼쪽으로 들여쓰기된 상태로 변경돼서 참고 부탁드립니다.


pipeline {

agent any


environment {

GRADLE_HOME = tool 'Gradle'

PATH = "${GRADLE_HOME}/bin:${PATH}"

SPRING_PROFILES_ACTIVE = 'dev' // Spring 환경 변수 추가

}


triggers {

// 매일 새벽 1시 실행

cron('0 1 * * *')

}


stages {

stage('Checkout') {

steps {

git branch: 'main',

credentialsId: 'git-credentials',

url: 'https://github.com/JeongTaekgyu/ecommerce-large-scale-msa.git'

}

}


stage('Change Directory and Print Working Directory') {

steps {

script {

// dir('PROJECT-PROMOTION/promotion/') { // 작업할 디렉토리

dir('promotion/') { // 작업할 디렉토리

sh 'pwd' // 현재 디렉토리 출력

}

}

}

}


stage('Build') {

steps {

// dir('PROJECT-PROMOTION/promotion/') { // 작업할 디렉토리

dir('promotion/') { // 작업할 디렉토리

sh './gradlew :point-service-batch:build -x test'

}

}

}


stage('Point Balance Sync') {

steps {

// dir('PROJECT-PROMOTION/promotion/') { // 작업할 디렉토리

dir('promotion/') { // 작업할 디렉토리

script {

try {

sh '''

./gradlew :point-service-batch:bootRun \

--args="--job.name=pointBalanceSyncJob --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"

'''

} catch (Exception e) {

currentBuild.result = 'FAILURE'

error("Point Balance Sync Job failed: ${e.message}")

}

}

}

}

}

}

}



파이프라인 스크립트에는 저의 github repository 인

https://github.com/JeongTaekgyu/ecommerce-large-scale-msa.git 을 등록했고

directory는 gradlew 파일이 있는 곳으로 등록했습니다.

jenkins의

/var/jenkins_home/workspace/pointBalanceSyncJob/PROJECT-PROMOTION/promotion

해당 디렉토리에 gradlew 파일이 없습니다.

확인해 보니 저의 git remote repository를 보니까 /PROJECT-PROMOTION 디렉토리는 없고

promotion 부터 시작해서 그런것 같습니다.


일단 제 github remote repository 에 디렉토리가 promotion 부터 시작하니까 pipeline 스크립트는 저렇게 dirtory를 전부 'promotion/' 으로 작성했습니다.


먼저 docker-compose.yml 파일을 실행 시켰습니다.

참고로 다른점이 있다면

예전 강의의 pinpont를 만들때 redis-practice 라는 컨테이너 이름을 생성해서

지금 docker-compose.yml 파일에선 redis의 컨테이너 이름을 redis-pratice2 로 했습니다.

그리고 jenkins의 pointBalanceSyncJob를 빌드 했습니다.



참고로 No tool named Gradle found 에러가 발생했을때

Jenkins 관리 - Tools의 Gradle installations에서

스크린샷 2025-04-24 오후 8.18.33.png


이렇게 강의와 동일한 버전을 선택했습니다.


그리고

jenkins 의 pointBalanceSyncJob 를 실행시켰습니다

실행 시켰더니 spring은 잘 실행 됐으나 에러가 발생했습니다.


console ouput 이 너무 길어 핵심 에러만 알려드립니다.

에러는 다음과 같습니다.

2025-04-24T17:26:58.910+09:00  WARN 2355 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pointServiceBatchApplication': Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'pointBalanceSyncJobConfig' defined in file [/var/jenkins_home/workspace/pointBalanceSyncJob/promotion/point-service-batch/build/classes/java/main/com/example/pointservicebatch/job/PointBalanceSyncJobConfig.class]: Unsatisfied dependency expressed through constructor parameter 3: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: localhost/127.0.0.1:6379.


결론은 spring 에서 redis를 실행할 수 없다는 에러로 보입니다.

참고로 젝 github remote repository는 아까 말한 주소입니다.


이해가 안가는것이 현재 로컬에서 docker ps 명령어를 입력하면 다음과 같습니다.


% docker ps

CONTAINER ID   IMAGE                           COMMAND                   CREATED        STATUS       PORTS                                              NAMES

b64b279f1e60   jenkins/jenkins:lts             "/usr/bin/tini -- /u…"   19 hours ago   Up 2 hours   0.0.0.0:50000->50000/tcp, 0.0.0.0:8888->8080/tcp   jenkins

45b896cc6ec8   prom/prometheus:v2.45.0         "/bin/prometheus --c…"   8 days ago     Up 2 hours   9090/tcp, 0.0.0.0:9091->9091/tcp                   prometheus

b7e3a2d3a796   provectuslabs/kafka-ui:latest   "/bin/sh -c 'java --…"   9 days ago     Up 2 hours   0.0.0.0:8999->8080/tcp                             infrastructure-kafka-ui-1

5a63b38a6889   grafana/grafana:10.0.3          "/run.sh"                 9 days ago     Up 2 hours   0.0.0.0:3000->3000/tcp                             grafana

ffe64db05a15   confluentinc/cp-kafka:7.5.1     "/etc/confluent/dock…"   13 days ago    Up 2 hours   0.0.0.0:9092->9092/tcp                             kafka2

ea748b1e03d6   redis:latest                    "docker-entrypoint.s…"   2 weeks ago    Up 2 hours   0.0.0.0:6379->6379/tcp                             e2ff61ac5f74_redis-practice2



분명 docker-compose.yml 에 등록한 컨테이너들은 다 잘 실행되고 있습니다.

그런데 대체왜 에러가 발생했을까요?

분명 application.yml 과 docker-compose.yml 은 제 github repository 가면 확인하실 수 있습니다.

원인을 잘 모르겠어 질문 드립니다.


답변 

연관 질문

커뮤니티 질문보기