일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- framework
- 클린코드
- 코드
- 자바
- cleancode
- 데이터베이스
- Elasticsearch
- Baekjoon
- db
- 애자일프로그래밍
- 프레임워크
- JPA
- 개발
- database
- API
- 애자일
- 코딩
- 개발자
- ES
- 알고리즘
- Java
- Spring
- 백준
- 그리디
- 스프링
- 코딩테스트
- 읽기쉬운코드
- 그리디알고리즘
- 애자일기법
- 엘라스틱서치
- Today
- Total
시뻘건 개발 도전기
[centOS] 젠킨스 설치의 삽질: 그 끝은 어디인가 본문
jenkins 2.4를 설치하려한다.
젠킨스는 jvm 위에서 동작하기때문에 젠킨스 버전 별로 자바 버전도 영향을 받는다.
그래서 젠킨스의 require java version을 알기 위해 아래 공식 포스팅을 보면 좋겠다.
https://www.jenkins.io/blog/2022/06/28/require-java-11/
나는 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 |
---|