(MOOK - 4) 프로젝트 생성 + CI + CD 구축 + 테스트빌드

NORMAN·2024년 10월 22일

Mook

목록 보기
4/5

프로젝트 Mook 을 개발 및 배포하는 과정을 정리하는 글입니다.

프로젝트 생성

https://start.spring.io/ 에서 Spring 프로젝트 생성

Gradle-Groovy / Java / 3.3.4
GroupId : org.teamMook
Artifact : mook
JAR / Java17

Dependency

  • Spring Web
  • Lombok
  • MySQL Driver
  • Spring Data JPA

Jenkins CI 구축

아이템을 생성하는 여러 방법들 중 Pipeline 사용

  • 하나의 스크립트 파일로 제어 가능
  • GUI로 통계 및 피드백 확인 가능
  • 버전 관리 가능

위와 같은 장점들이 있어 선택

1. 아이템 생성

name : mook
Pipeline 선택 후 OK

2. 스크립트 작성

스크립트를 작성하는 방법은 2가지
1. Pipeline Script : Jenkins 웹에서 작성
2. Pipeline Script from SCM : 프로젝트 내부에서 작성

문법은 2가지
1. Declarative Pipeline : 최상단에 pipeline 이라 적혀있음, 작성 쉬움, Groovy 문법 기반
2. Scripted Pipeline : 최상단에 node 라 적혀있음, 기능 많지만 상대적으로 어려움, Groovy 문법 기반

3. 실행

3-1. 문제 1. 메모리 부족

매우 소규모 프로젝트 상태인데도 5분을 넘어가는 상황 발생


-> Swap 메모리 추가로 해결했습니다.

  • EC2 프리미어는 메모리가 1GB밖에 되지 않기 때문에 이 서버에서 Jenkins를 빌드하다보면 종료되어버리는 상황이 발생할 수 있어 Swap 메모리를 추가하는 것이 좋다하여 찾아보고 추가하게 되었습니다.

3-2. 문제 2. Gradle이 jdk를 찾지 못하는 문제 발생

* What went wrong:

Could not determine the dependencies of task ':bootJar'.

> Could not resolve all dependencies for configuration ':runtimeClasspath'.

   > Failed to calculate the value of task ':compileJava' property 'javaCompiler'.

      > Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=17, vendor=any vendor, implementation=vendor-specific} for LINUX on x86_64.

         > No locally installed toolchains match and toolchain download repositories have not been configured.

사실 이 문제를 해결하는 데 굉장히 오래 걸렸다..

서칭, chatGPT 등 여러 정보를 보고
1. 환경 변수 설정
2. 벤더 설정 추가
3. 실행 명령어 변경
4. grdle.properties 파일에 설정 추가
5. jenkins 내부 설정 변경
등등.. 여러 방법을 써도 해결을 못했다. (실제로 실패를 30번정도 한 것 같다..)

결국 해결은 공식문서를 보고 해결했다.
Gradle 8.10.2에서 툴체인을 자동으로 감지해주는 Foojay Toolchains Resolver 를 사용하기 위해 settings.gradle에

plugins {
    id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0'
}

을 추가하고 빌드해보았다.

드디어 해결했다..

공식문서가 아닌 서칭이나 chatGPT부터 확인하는 안 좋은 습관은 고쳐야겠다고 생각했다.
역시.. 공식문서가 최우선인 것 같다.

Reference

Gradle 8.10.2 공식문서
Swap 메모리 설정 - diary-developer's tistory

profile
백엔드 개발자 노먼입니다.

2개의 댓글

comment-user-thumbnail
2024년 10월 27일

사람 한 명 살렸습니다 감사합니다:)

답글 달기
comment-user-thumbnail
2025년 2월 10일

감사합니다 큰 도움 되었습니다!

답글 달기