Ncloud (네이버 클라우드) VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법입니다.

개요

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
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

GPG 키 추카

그런 다음 Jenkins GPG 키를 다음과 같이 추가 합니다.

~# rpm --import \
    https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

패키지 업데이트

그리고, 패키지 관련한 보안-버그 수정 사항만 최소한으로 업데이트를 진행합니다.

~# dnf -y upgrade-minimal
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

JAVA 설치

Jenkins를 구동하기 위해서 필요한 JAVA 11 버전을 설치합니다.

~# dnf -y install java-11-openjdk
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

JAVA 버전 선택

현재 시스템에 설치된 JAVA는 기본 설치 버전인 [java-1.8.0]과 좀 전에 설치한 [java-11] 이렇게 2가지인데, Jenkins는 [java-11] 버전을 사용하므로 다음 명령어로 [java-11] 버전이 기본으로 적용되도록 설정을 변경하겠습니다.
명령어 입력 후 나타난 선택화면에서 [java-11] 버전에 해당하는 2번을 입력합니다. 그리고, 변경이 제대로 되었는지 java 버전을 확인합니다.

~# update-alternatives --config java
~# java -version
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

Jenkins 설치

모든 준비가 끝났으면 Jenkins를 설치합니다.

~# dnf -y install jenkins
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

Jenkins 서비스 시작

Jekins 서비스를 시작하고 정상 작동을하고 있는지 다음과 같이 확인합니다.

~# systemctl daemon-reload
~# systemctl enable jenkins
~# systemctl start jenkins
~# systemctl status jenkins
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

방화벽 ACG 설정

Jekins 서버가 사용하는 기본 포트는 8080 입니다. Ncloud 방화벽 ACG에서 8080 포트를 허용해줍니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

초기 설정

Port 변경

Jenkins의 기본 접속 Port는 8080인데 /etc/sysconfig/jenkins 의 JENKINS_PORT= 항목에서 변경 할 수 있습니다.
~# vi /etc/sysconfig/jenkins
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

초기 패스워드 확인

설치가 완료 되면 http://{서버 IP주소}:8080 으로 접속하면 아래의 스크린샷처럼 초기 어드민 패스워드를 입력하는 화면이 나타납니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

초기 어드민 패스워드는 /var/lib/jenkins/secrets/initialAdminPassword 파일에 기록되어 있습니다.
cat 명령어로 초기 패스워드를 확인합니다.

~# cat /var/lib/jenkins/secrets/initialAdminPassword
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

플러그인 설치

플러그인 설치는 추천 플러그인을 설치하는 옵션과 직접 선택해서 설치하는 옵션이 있습니다. 일단 여기서는 추천 플러그인을 선택하겠습니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

추천 플러그인을 선택하면 아래와 같이 설치과정이 나타납니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

직접 플러그인을 선택할 경우 아래와 같이 여러 플러그인 중에서 설치하고 싶은 플러그인을 선택할 수 있습니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

어드민 계정 정보 입력

플러그인 설치를 마치면 아래와 같이 어드민 계정 정보를 입력하게 됩니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

설치 완료

필요한 정보를 모두 입력하고 나면 마지막으로 Jekins URL을 확정하고 저장합니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

설치가 모두 끝났습니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

이제 Jekins에 접속하면 아래와 같은 화면을 확인할 수 있습니다.

Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

오류 상황

위 순서대로 설치를 진행했다면 문제 없이 설치가 되겠지만, 혹시나 설치 중에 중요한 과정을 빠뜨렸을 경우 아래아 같이 [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.
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

오류 원인 분석

위 오류 메시지에서 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.
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법
  • 다음으로 [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'
Ncloud VPC 환경에서 Rocky Linux에 Jenkins 서버를 설치하는 방법

오류 해결

즉, 오류 원인은 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

  1. Jeins Redhat Packages
  2. Jenkins User Documentation
Tags: github