무중단 배포 진행하기

무중단 배포 진행하기 2023 - 젠킨스 빌드 시 3가지 에러 상황

코드 살인마 2023. 6. 30. 19:32
728x90

첫번 째 에러 상황

ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/java-11-openjdk-devel.x86_64/bin/javac

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE

생각해보니, 해당 프로젝트는 java 17 버전으로 빌드해야해서, java17을 새로 다운 받았다.

 

사용하고 있는 OS인 centos7에서는 java17을 yum으로 설치 할 수 없어서, 아래 블로그를 따라 했다.

https://velog.io/@koreakky/CentOS-7에-OpenJDK17-설치하기

 

CentOS 7에 OpenJDK17 설치하기

이 방법은 Yum을 통한 설치가 아닌, JDK 소스폴더를 다운받아 Path 경로를 잡아주는 방식이다.tmp\`\`\`두줄 추가OpenJDK 17 이 정상적으로 설치되었다.

velog.io

단, 위 블로그를 참고할 경우, 이전에 /etc/profile 에 설정했던 JAVA_HOME 경로가 겹치기 때문에 지워야한다.

 

JAVA_HOME 경로를 바꾸더라도 이상하게 젠킨스에서는 인식하지 못한다. 그래서 아래와 같은 작업이 필요하다.

  • Jenkins 관리 → Tools → JDK 들어가서 아래 내용처럼 세팅한다.

 

2번째 에러 상황

* What went wrong:
A problem occurred configuring root project 'board-kata'.
> Could not resolve all files for configuration ':classpath'.
   > Could not resolve io.spring.gradle:dependency-management-plugin:1.1.0.
     Required by:
         project : > io.spring.dependency-management:io.spring.dependency-management.gradle.plugin:1.1.0
         project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.0-M1 > org.springframework.boot:spring-boot-gradle-plugin:3.1.0-M1
      > Could not resolve io.spring.gradle:dependency-management-plugin:1.1.0.
         > Could not get resource 'https://plugins.gradle.org/m2/io/spring/gradle/dependency-management-plugin/1.1.0/dependency-management-plugin-1.1.0.pom'.
            > Could not GET 'https://plugins-artifacts.gradle.org/io.spring.gradle/dependency-management-plugin/1.1.0/ad292101558beb62b682be6f07efbc771dfc48db89e6d6a14483e497fe724e94/dependency-management-plugin-1.1.0.pom'.
               > Network is unreachable

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

해당 에러는 gradle 플러그인을 가져오지 못해 생긴 에러이다. build.gradle 에 해당 라인을 추가하면 된다.

maven { url 'https://plugins.gradle.org/m2/'}

 

3번째 에러 상황

BoardKataApplicationTests > contextLoads() FAILED
    java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:142
        Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1752
            Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:267
                Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:147

해당 로그로는 어떤게 문제인지 알 수 없다. —debug 설정을 추가하면 자세한 로그를 볼 수 있다.

더 자세한 로그가 남았는데, 확인해보니 DB 연결에 문제가 있었다.

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

프로젝트의 application.properties를 확인해보니, DB설정이 로컬로 되어 있어서, 외부 머신(centos7)에 MYSQL을 설치하였다. MYSQL 설치 방법은 해당 링크를 참고하였다. (https://blogger.pe.kr/1037)

 

외부 머신에 MYSQL 설치 이후에 정상적으로 빌드 되었다.