일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- blue-green
- 그라파나 시각화
- 딥레이서 보상함수
- 로드밸런서 컨트롤러
- 메탈LB
- 깃허브 액션
- 그라파나 대시보드
- 딥레이서
- headless service
- 쿠버네티스
- 쿠버네티스 컴포넌트
- grafana on kubernetes
- LoadBalancer Controller
- SAA 합격 후기
- livenessPorbe
- EKS 클러스터
- github action 사용법
- kubernetes 동작 원리
- jenkins
- Kubernetes
- Aurora cluster
- helm
- terraform
- Prometheus install
- Firelens
- Kubernets on Jenkins
- EFS CSI Driver
- AWS 딥레이서
- Solution Architecture
- 솔데스크
mingming
Jenkins Maven Project JDK 버전 설정 본문
Jenkins가 JDK 11의 End of Support(EOS) 상태가 되면서, 최신 Jenkins Controller에서는 JDK 17을 사용해야 합니다.
JDK 버전이 업그레이드됨에 따라 몇가지 해결해야 할 문제가 있었습니다. 2.440.1 버전에서 2.462.3 버전으로 업그레이드 시 겪은 문제에 대해 공유해보려 합니다.
Jenkins 버전 업그레이드 이후 Maven Project로 구성된 Job이 빌드가 실패하는 현상이 발생했습니다. 기존 JDK 11버전으로 빌드 되어야 하는 어플리케이션이 JDK 17버전으로 빌드 되면서 의존성에 문제가 생겨 Maven 빌드 시 에러가 발생하였습니다.
1. JDK Tools 설정
Jenkins 관리 메뉴의 Tools 메뉴에서 사용할 JDK 버전을 지정하여 여러 Job 혹은 Agent에서 JDK 버전에 맞게 사용할 수 있습니다.
JAVA_HOME 경로 입력시 Jenkins Controller에 해당 디럭터리가 없다는 문구가 나오는건 현재 Jenkins 서버에 해당 디렉터리가 존재하지 않기 때문입니다.
실제 빌드가 수행될 Node에 해당 경로가 있으면 상관 없습니다.
2. Agent Node JDK 버전 설정
Nodes 의 설정 Tool Locations 에서 위에서 설정한 JDK 설정을 불러와 사용할 수 있습니다. JAVA_HOME 경로를 명시하여 기존 설정을 오버라이딩 할 수 있습니다.
3. Maven Project JDK 버전 설정
1번 과정에서 Jenkins의 Tools에서 설정한 JDK 버전이 여러개 라면 Maven Project Job에서 사용할 JDK 버전을 지정할 수 있습니다.
Job의 구성에서 하기의 캡쳐화면과 같이 구성 할 수 있습니다.
다만, 위와 같이 JDK 가 여러개 설정되어 있다면, Maven Project Job에 JDK 를 명시해야 정상적으로 적용이 됩니다.
4. 제한사항
Maven Project는 Jenkins Controller의 JDK 버전에 영향을 받습니다. 그렇기에 JDK 버전의 변경에 따라 갑자기 빌드가 실패하는 이슈를 겪는 사례들을 쉽게 찾아 볼 수 있었습니다. 때문에, 많은 사람들은 Maven Project 에서 Pipeline으로 이관하는 것을 권고합니다.
또한, 2.462.3 버전 이상의 Jenkins 버전에선 Jenkins Controller의 JDK 버전보다 Maven Project 에서 지정한 JDK 버전이 낮을 때는 하기와 같은 에러가 발생하면서 더이상 빌드가 진행되지 않습니다.
ERROR: ================================================================================
ERROR: Invalid project setup: Failed to load hudson.maven.AbstractMavenProcessFactory$ConfigureOriginalJDK
ERROR: [JENKINS-18403][JENKINS-28294] JDK 'JDK 11' not supported to run Maven projects.
ERROR: Maven projects have to be launched with a Java version greater or equal to the minimum version required by the controller.
ERROR: Use the Maven JDK Toolchains (plugin) to build your maven project with an older JDK.
ERROR: Retrying with agent Java and setting compile/test properties to point to D:\Jenkins\Tool\jdk-11.
ERROR: ================================================================================
Maven Project에선 agent.jar와 별도로 maven35-agent.jar를 통해 Controller와 Node간 원격 채널을 구성합니다.
이 과정에서 Controller와 job에 명시한 JDK 버전의 차이로 채널이 정상적으로 구성되지 않습니다.
현재 관리하고 있는 Job 대부분 Maven Project를 사용하고 있기에 추후 이를 Pipeline 방식으로 이관하는 방안을 고려해야 할 것 같습니다.
'DevOps' 카테고리의 다른 글
Jenkins + ArgoCD CI/CD Pipeline 구축(2) - Kustomize, ArgoCD (1) | 2024.02.07 |
---|---|
Jenkins + ArgoCD CI/CD Pipeline 구축(1) - Jenkins (0) | 2024.02.04 |
Jenkins Blue/Green Deployment (0) | 2023.09.14 |
Jenkins 메뉴 소개 (0) | 2023.09.11 |
jenkins on kubernetes (0) | 2023.09.10 |