본문 바로가기

토이프로젝트/리뷰어(영화 리뷰 사이트)

백엔드 cicd 구축하기2

이전에 문제가 됐던 부분은 로컬 환경에서는 jar 파일이 정상적으로 실행되지만

원격 환경에서는 실행되지 않는 문제였다.

검색을 해봐도 같은 문제를 겪었던 사람이 없었기 때문에 한참을 헤맸는데

걸린 시간에 비해 해결은 굉장히 간단했다....

지금 구축중인 cicd 구조를 간단하게 설명해보면

aws 원격 서버를 띄우고, 해당 서버에서 docker를 연결한 후, jenkins 이미지를 받아서 실행한다.

이렇게 띄운 jenkins 서버에서 cicd를 구축하기 위해서 일단 ci부분을 구현중이었고,

github에서 커밋이 될 경우 jenkins에서 이를 인식해 spring boot 프로젝트를 build 후 실행 하는 부분까지 진행중이었다.

문제점은... jenkins가 어떻게 동작중인지 정확하게 인지하지 못한 채로 그 다음단계를 진행했기 때문에 발생했다.

#docker-compose.yml
version: "3"
services:
  jenkins:
    image: jenkins/jenkins:lts
    user: root
    volumes:
      - ./jenkins:/var/jenkins_home
    ports:
      - 8080:8080

위 파일은 docker-compose를 통해 실행하기위한 yml파일이다.

여기서 다운받는 jenkins 이미지가 jenkins:lts인게 문제였다....!!!!

내 프로젝트는 java17을 사용하는데, jenkins:lts를 사용할 경우 java8 버전을 지원하기 때문에 높은 버전은 실행이 되지 않았던 거다.

java 버전문제를 해결하기 위해서 docker에서 실행중인 jenkins 컨테이너에 접속해서 openjdk 17버전을 설치하고 환경변수 설정을 해봤는데,

docker로 설치한 jenkins에서는 이런식으로 임의로 변경하는게 불가능한 것 같았다.

설치 후 재접속할 경우에 다시 java8버전으로 변경된것을 확인했었다.

그렇기 때문에 jenkins 이미지 자체를 받을 때, 원하는 java버전을 특정한 후 실행할 경우에만 정상적으로 작동이 됐다.

단순히 jenkins에서 jar 파일을 받아온 후 실행하는 간단한 구조였다면 발생하지 않았을 텐데, 모르는 부분이라 docker image를 사용해서 한층 더 복잡해지는 바람에 발생한 문제이다.

현재는 해당 image 부분을 jenkins:jdk17로 변경한 후 사용중이고, ci구축까지는 성공했다.