Ncloud Jenkins 서버 설치 가이드 | Rocky Linux
개요
Ncloud (네이버 클라우드)의 Classic 환경에서는 Jekins 서버 이미지를 제공하고 있지만, VPC 환경에서는 제공하지 않기에 VPC 환경 록키 리눅스(Rocky Linux) 서버에 Jekins 서버를 설치하는 과정을 정리해보겠습니다.
Jenkins란
Jenkins는 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Delivery, CD)를 위한 대표적인 도구로 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질 향상과 개발 생산성 향상에 도움을 주는 도구입니다.
Jenkins 특징
- 지속적 통합을 사용하여 빌드, 테스트, 배포 과정을 자동화하여 개발 생산성을 향상할 수 있습니다.
- 자동화 테스트를 통하여 소프트웨어 품질을 향상할 수 있습니다.
- 지속적인 통합을 통해 안정적인 릴리즈를 빠르게 배포할 수 있습니다.
설치 과정
패키지 저장소 추가
먼저 Jenkins의 패키지 저장소를 추가합니다.
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
GPG 키 추카
그런 다음 Jenkins GPG 키를 다음과 같이 추가 합니다.
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
패키지 업데이트
그리고, 패키지 관련한 보안-버그 수정 사항만 최소한으로 업데이트를 진행합니다.
dnf -y upgrade-minimal
JAVA 설치
Jenkins를 구동하기 위해서 필요한 JAVA 11 버전을 설치합니다.
dnf -y install java-11-openjdk
JAVA 버전 선택
현재 시스템에 설치된 JAVA는 기본 설치 버전인 [java-1.8.0]과 좀 전에 설치한 [java-11] 이렇게 2가지인데, Jenkins는 [java-11] 버전을 사용하므로 다음 명령어로 [java-11] 버전이 기본으로 적용되도록 설정을 변경하겠습니다.
명령어 입력 후 나타난 선택화면에서 [java-11] 버전에 해당하는 2번을 입력합니다. 그리고, 변경이 제대로 되었는지 java 버전을 확인합니다.
update-alternatives --config java
java -version
Jenkins 설치
모든 준비가 끝났으면 Jenkins를 설치합니다.
dnf -y install jenkins
Jenkins 서비스 시작
Jekins 서비스를 시작하고 정상 작동을하고 있는지 다음과 같이 확인합니다.
systemctl daemon-reload
systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins
방화벽 ACG 설정
Jekins 서버가 사용하는 기본 포트는 8080 입니다. Ncloud 방화벽 ACG에서 8080 포트를 허용해줍니다.
초기 설정
Port 변경
vi /etc/sysconfig/jenkins
초기 패스워드 확인
설치가 완료 되면 http://{서버 IP주소}:8080 으로 접속하면 아래의 스크린샷처럼 초기 어드민 패스워드를 입력하는 화면이 나타납니다.
초기 어드민 패스워드는 /var/lib/jenkins/secrets/initialAdminPassword 파일에 기록되어 있습니다.
cat 명령어로 초기 패스워드를 확인합니다.
cat /var/lib/jenkins/secrets/initialAdminPassword
플러그인 설치
플러그인 설치는 추천 플러그인을 설치하는 옵션과 직접 선택해서 설치하는 옵션이 있습니다. 일단 여기서는 추천 플러그인을 선택하겠습니다.
추천 플러그인을 선택하면 아래와 같이 설치과정이 나타납니다.
직접 플러그인을 선택할 경우 아래와 같이 여러 플러그인 중에서 설치하고 싶은 플러그인을 선택할 수 있습니다.
어드민 계정 정보 입력
플러그인 설치를 마치면 아래와 같이 어드민 계정 정보를 입력하게 됩니다.
설치 완료
필요한 정보를 모두 입력하고 나면 마지막으로 Jekins URL을 확정하고 저장합니다.
설치가 모두 끝났습니다.
이제 Jekins에 접속하면 아래와 같은 화면을 확인할 수 있습니다.
오류 상황
위 순서대로 설치를 진행했다면 문제 없이 설치가 되겠지만, 혹시나 설치 중에 중요한 과정을 빠뜨렸을 경우 아래아 같이 [Jenkins]를 시작하려고 할 때 오류가 발생하게 됩니다.
systemctl start jenkins
Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
오류 원인 분석
위 오류 메시지에서 2가지 방법으로 상세한 오류 내용을 확인해보겠습니다.
- 우선 첫번째 명령 [systemctl status jenkins.service]으로 확인을 해보았으나 별다른 내용은 나오지 않습니다.
systemctl status jenkins.service
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-06-30 17:08:01 KST; 1min 25s ago
Process: 6494 ExecStart=/usr/bin/jenkins (code=exited, status=1/FAILURE)
Main PID: 6494 (code=exited, status=1/FAILURE)
Jun 30 17:08:01 jenkins-test systemd[1]: Failed to start Jenkins Continuous Integration Server.
Jun 30 17:08:01 jenkins-test systemd[1]: jenkins.service: Service RestartSec=100ms expired, scheduling restart
Jun 30 17:08:01 jenkins-test systemd[1]: jenkins.service: Scheduled restart job, restart counter is at 5.
Jun 30 17:08:01 jenkins-test systemd[1]: Stopped Jenkins Continuous Integration Server.
Jun 30 17:08:01 jenkins-test systemd[1]: jenkins.service: Start request repeated too quickly.
Jun 30 17:08:01 jenkins-test systemd[1]: jenkins.service: Failed with result 'exit-code'.
Jun 30 17:08:01 jenkins-test systemd[1]: Failed to start Jenkins Continuous Integration Server.
Jun 30 17:08:03 jenkins-test systemd[1]: jenkins.service: Start request repeated too quickly.
Jun 30 17:08:03 jenkins-test systemd[1]: jenkins.service: Failed with result 'exit-code'.
Jun 30 17:08:03 jenkins-test systemd[1]: Failed to start Jenkins Continuous Integration Server.
- 다음으로 [journalctl -xe] 명령을 입력해보니 상당히 긴 로그가 나오는데, 차근차근 살펴보다 보니 원인을 찾을 수 있었는데, 그 부분만 발췌해보면 아래와 같습니다.
journalctl -xe
#------------- 중간 생략 --------------#
-- Unit jenkins.service has begun starting up.
Jun 30 17:37:41 jenkins-test jenkins[7588]: jenkins: invalid Java version: openjdk version "1.8.0_352"
Jun 30 17:37:41 jenkins-test jenkins[7588]: OpenJDK Runtime Environment (build 1.8.0_352-b08)
Jun 30 17:37:41 jenkins-test jenkins[7588]: OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode)
Jun 30 17:37:41 jenkins-test systemd[1]: jenkins.service: Main process exited, code=exited, status=1/FAILURE
Jun 30 17:37:41 jenkins-test systemd[1]: jenkins.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- The unit jenkins.service has entered the 'failed' state with result 'exit-code'.
Jun 30 17:37:41 jenkins-test systemd[1]: Failed to start Jenkins Continuous Integration Server.
-- Subject: Unit jenkins.service has failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit jenkins.service has failed.
--
-- The result is failed.
#------------- 중간 생략 --------------#
jenkins: invalid Java version: openjdk version '1.8.0_352'
오류 해결
즉, 오류 원인은 JAVA 버전이었습니다. 현재의 Jenkins는 [java-11] 버전을 사용하는데, [java-11]을 설치하지 않았거나
현재 시스템에 JAVA가 [java-11] 뿐만 아니라 [java-1.8.0] 버전도 함께 설치되어 있는데, [java-1.8.0] 버전이 기본 버전으로 설정된 상태여서 생기는 문제
입니다.
위쪽 설치 단계에서 확인했던 아래 명령으로 JAVA 기본 버전을 [java-11]로 변경해주고 Jenkins를 시작하면 문제가 없습니다.
update-alternatives --config java
java -version
참고 URL
-
Jeins Redhat Packages
https://pkg.jenkins.io/redhat-stable/ -
Jenkins User Documentation
https://www.jenkins.io/doc/
문서 업데이트 내역
날짜 | 내용 |
---|---|
2023-07-03 | 문서 최초 생성 |