배경
이번 프로젝트의 경우 jdk8은 문제가 없는 상황에서 잘 사용했습니다.
jdk11이 필요한 상황예를 들어, rabbitMQ나 sonarqube를 사용하려면 11 이상이 필요한 것으로 확인되었습니다.
dev server, prod server, front server, deep learning learning server,,, 이 프로젝트에 기존 Jenkins 설정이 너무 많아서 새 Jenkins를 설치할 수 없어 버전을 변경하기로 했습니다.
과정을 명확하게 설명하는 블로그가 없어서 한번 정리해 봅니다.
기본 버전: 8
Jenkins를 Docker로 설치할 때 기본 jdk 버전은 8입니다.
Jenkins 서버 내부에 jdk를 설치하고 버전을 지정할 수 있지만 Jenkins 9까지는 무료입니다.
단, Jenkins는 설치를 지원하지 않으며 Jenkins 서버에서 Java 버전을 11로 설정하면 문제가 없습니다.
Oracle의 가격 정책에 문제가 있는 것 같습니다.
따라서 jenkins를 도커 컨테이너로 실행하는 경우 jdk11이 설치된 이미지가 있습니다.
docker pull jenkins/jenkins:jdk11
아직 Jenkins가 설치되어 있지 않거나 특별한 설정 없이 Java 버전을 업데이트하려면 위의 Docker 이미지를 사용하세요. 새로 받는게 나을듯오전.
OpenJdk 11 설치
여전히 기존 설정이 많고 직접 버전을 변경해야 하는 경우 아래 단계를 따를 수 있습니다.
Docker 컨테이너에 직접 연결하고 버전 11을 설치하고 환경 변수를 변경하기만 하면 됩니다.
일반적으로 Ubuntu는 Java 버전의 변경 사항을 따릅니다.
1. Docker 컨테이너에 연결
docker exec -it {container_id} /bin/bash
2. openjdk 11 설치
sudo apt-get update
// bash: sudo: command not found
여기서 sudo 명령이 존재하지 않는다는 오류가 표시됩니다.
이 문제는 docker execute에 u 옵션을 추가하여 루트 권한을 획득하면 해결됩니다.
컨테이너에 대한 연결부터 다시 시작하겠습니다.
이번에는 루트 권한으로 접속합니다.
1. 도커 컨테이너 접근/루트 권한
docker exec -itu 0 {container_id} /bin/bash
2. openjdk 11 설치
apt-get update
apt-get install openjdk-11-jdk
3. 환경 변수 설정
설치할 환경변수를 11로 설정하려고 하면 이번에는 vi가 존재하지 않는다고 나옵니다.
vi etc/profile
// bash: vi: command not found
추가 작업 없이 Jenkins에서 편리하게 JAVA_HOME을 지정할 수 있습니다.
아래를 따라 자유롭게
Jenkins 웹에 연결하고 Jenkins 관리를 입력합니다.
시스템 구성 / 전역 도구 구성을 입력합니다.
JDK를 찾아 경로를 제공하십시오.
완료::확인
JDK 11이 잘 적용되었는지 확인하는 가장 간단한 팁을 공유합니다.
빌드 시 실행 셸을 추가하고 Java 버전을 가져옵니다.
Jenkins 프로젝트로 이동하여 구성합니다.
Build를 찾아 Add build Step으로 Execute 셸을 추가하거나 기존 Execute 셸에서 java -version을 확인하는 명령을 붙여넣습니다.
그리고 빌드 출력을 통해 jdk 11이 잘 적용되었는지 확인하고 빌드하는 것이 가장 깔끔하고 편리한 방법인 것 같습니다.