시뻘건 개발 도전기

[centOS] 젠킨스 설치의 삽질: 그 끝은 어디인가 본문

기타/Linux

[centOS] 젠킨스 설치의 삽질: 그 끝은 어디인가

시뻘건볼때기 2023. 7. 28. 00:53
반응형

jenkins 2.4를 설치하려한다.

젠킨스는 jvm 위에서 동작하기때문에 젠킨스 버전 별로 자바 버전도 영향을 받는다.

그래서 젠킨스의 require java version을 알기 위해 아래 공식 포스팅을 보면 좋겠다.

https://www.jenkins.io/blog/2022/06/28/require-java-11/

 

Jenkins requires Java 11 or newer

As noted above, members of the Jenkins community began working on Java 11 support in 2018, well before the present author’s involvement in the project and well beyond the present author’s ability to identify and name everyone who was involved in the ef

www.jenkins.io

 

나는 java 17과 jenkins 2.4를 설치한다.

 

 

1. java 17 설치

wget https://download.oracle.com/java/17/archive/jdk-17.0.8_linux-x64_bin.tar.gz
tar -xvf jdk-17.0.8_linux-x64_bin.tar.gz
vi /etc/profile

/etc/profile 에서 아래 두 줄을 추가하여 환경변수 등록을한다.

export JAVA_HOME={설치된 java path}
export PATH=$PATH:$JAVA_HOME/bin
java -version

java 버전이 잘 노출되면 성공.

 

2. jenkins 2.4 설치 및 실행 (예전에 설치한 젠킨스 버전과 차이가 너무 큰 탓인지 삽질을 많이 했다..)

# yum repository에 jenkins redhat repo 추가
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
# rpm에 젠킨스를 추가
rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
# jenkins install
yum install jenkins
# Jenkins를 부팅 시 시작
systemctl enable jenkins
# Jenkins 시작
systemctl start jenkins

2-1. 포트 변경

젠킨스는 default port로 8080을 갖는다. 나는 포트 충돌을 피하기위해 "JENKINS_PORT" 값을 9091로 변경해주었다.

vi /etc/sysconfig/jenkins

3. 내가 직면한 이슈.

3-1. 그냥 failed. 뭔지도 모르겠어 그냥 failed.....

service jenkins start
Starting jenkins (via systemctl):  Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.

[journalctl -xe]를 통해 로그를 살펴보니 그 어떠한 단서도 알 수 없었다.

진짜 여기서 뚜껑이 열리기 시작.... 챗gpt, stackoverflow와 함께 힘을 내보았다.

 

3-1-1. 첫 번째 시도: 포트 수정

vi /usr/lib/systemd/system/jenkins.service

분명히 [/etc/sysconfig/jenkins]에서 포트 수정을 했으나 [/usr/lib/systemd/system/jenkins.service]에도 포트 설정이 있는 것이 아닌가..?! 그래서 포트를 똑같이 9091로 해보았으나 실패. (각 설정 파일이 어떤 용도인지 너무나도 궁금하지만.. 고것은 다음 시간에 알아보기로했다.)

 

3-1-2. 두 번째 시도: 너 자바 설치한거 맞어?

GPT가 자바 버전 잘 설치한거 맞냐고 물어보더라... 그래서 stackoverflow를 샅샅이 뒤지다가 한 가지 힌트를 알게되었지.

"너 젠킨스 설정에서 JAVA_HOME 등록해야돼."

vi /etc/init.d/jenkins

아니 환경변수가 있는데 왜? 굳이? 이렇게 만들었지? 설마 하는 마음에 [/etc/init.d/jenkins]에서 아래와 같은 코드가 있을텐데, 이 곳에 자바 실행 파일의 경로를 추가했지만 실패.

candidates="
{나의 java}
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java
"

 

3-1-3. 세 번째 시도: 그렇게 등록 해서는 안돼!

[journalctl -xe]를 통해 로그를 살펴보니 아래 문장이 내 뒤통수를 씨게 쳤다.

jenkins: failed to find a valid Java installation

JAVA_HOME이 제대로 설정이 안되서가 아니라, jenkins에 JAVA_HOME을 설정을 해주지 않아서다. GPT가 옳았다.

그렇게 모든 젠킨스 설정 파일을 눈 씻고 찾아보다가 결국 찾아냈다.

vi /usr/lib/systemd/system/jenkins.service

해당 파일을 열어서 아래와 같이 설정을 해면 성공.

Environment="JAVA_HOME={JAVA_HOME}"
Environment="JENKINS_JAVA_CMD={JAVA_HOME}/bin/java"

 

3-2. 너 내가 쓰는 폰트 있냐?

java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null ... Caused: java.lang.reflect.InvocationTargetException ... Caused: java.lang.InternalError ... Caused: hudson.util.AWTProblem

 

로그를 봐도 알 수 있듯이 뭐가 없단다. 그게 폰트라는데 이 녀석을 그럼 추가해주면 깔끔하것지?

3-2-1. 첫 번째 시도: 응~ 설치 해줄게~

yum install fontconfig

설치하면 성공.

 

 

4. 젠킨스 잘 올라갔는지 확인하기

systemctl status jenkins

참고) 젠킨스 로그 파일의 경로도 수정할 수 있다.

vi /etc/sysconfig/jenkins

 

 

참고문헌

반응형

'기타 > Linux' 카테고리의 다른 글

#1 : 기본적인 명령어  (0) 2020.06.14
Comments