Server

[Jenkins] Linux에 jenkins 설치

devhyen 2024. 7. 26. 13:50

자동 배포를 위해 jenkins를 도입하려고 했다.

우선 개발 서버에 jenkins를 셋팅 해보았다. 

현재 운영체제 확인

cat /etc/redhat-release
위 명령어를 입력하면 현재 OS의 정보를 알 수 있다.
서버 OS : CentOS Linux release 7.9.2009 (Core)

공식 문서

jenkins docs linux install

권장 사항

  • 4GB 이상의 RAM
  • 50GB 이상의 드라이브 공간
  1. RAM 확인
    free -h 를 한 뒤 Mem 항목의 total 확인
  2. 드라이브 공간 확인
    df -h 를 한 뒤 Mounted on이 / 인 항목의 Size 확인

자바 지원 버전

jenkins 설치

Jenkins 패키지 저장소를 추가 및 GPG키 추가

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

 

설치가능한 jenkins 버전 목록 확인 (선택사항)

yum --showduplicates list jenkins | expand

 

특정 버전 설치 (예:2.346.3)

 

yum install jenkins  하면 바로 설치가 되지만, 

자바 8을 그대로 사용하기 위해 이전 특정버전을 받으려고 시도하였다. 

하지만, public Key가 계속 맞지 않는다고 뜨고, 최신버전은 문제가 없었지만, 이전 버전은 계속 실패하게 됐다..

 

다른 방식으로 설치를 하기로 했다..

rpm 을 직접 받은 후, localinstall을 해줬다. 결국 이방법은 성공 🤍

wget https://pkg.jenkins.io/redhat-stable/jenkins-2.346.3-1.1.noarch.rpm
sudo yum localinstall jenkins-2.346.3-1.1.noarch.rpm
# Jenkins 시작
sudo systemctl start jenkins

# Jenkins 상태 확인
sudo systemctl status jenkins

 

켜졌다..!

설치 후

http://localhost:8080 (localhost 는 리눅스 서버의 주소로 변경) 로 브라우저에 접속을 하면 아래와같은 화면이 뜬다.

jenkins의 잠금을 해제 해줘야 하는데,

붉은색으로 브라우저에 적힌 /var/jenkins_home/secrets/initialAdminPassword 를 열어서 나오는 패스워드를 입력해주면 된다. 

 

sudo cat /var/lib/jenkins/secrets/initialAdminPassword 

 

잠금을 해제하고 난 뒤 나오는 화면이다. 

 

  1. 권장 플러그인 설치
    • 가장 일반적인 사용 사례를 기반으로 Jenkins가 권장하는 플러그인 세트를 설치합니다. 이 옵션을 선택하면, Jenkins가 자동으로 필요한 플러그인들을 선택하여 설치해줍니다.
  2. 설치할 플러그인 선택
    • 초기 설치 시 설치할 플러그인 세트를 직접 선택할 수 있습니다. 플러그인 선택 페이지에 처음 접근하면 권장 플러그인이 기본적으로 선택되어 있습니다. 그러나 사용자가 필요에 따라 선택을 변경할 수 있습니다.

 

 

 


에러 해결

CASE 1.

ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
Issued certificate has expired.

 

- 원인 : SSL 인증서를 검증할 수 없기 때문에 발생

  • 서버의 SSL 인증서가 실제로 만료된 경우: 서버 측에서 인증서 갱신을 하지 않은 경우.
  • 클라이언트의 인증서 신뢰 체인이 최신 상태가 아닌 경우: 클라이언트 측의 인증서 저장소가 오래되었거나 최신 루트 인증서가 포함되지 않은 경우.

- 해결법

1. SSL 검증 비활성화 (비추천)

echo "check\_certificate = off" >> ~/.wgetrc

위 명령어를 쓰면 wget이 모든 SSL 인증서 검증을 건너뛰게 된다.

하지만, 위 해결방법은 보안 리스크가 증가할 수 있다.

SSL인증서는 데이터 전송과 기밀성을 보장하며, 중간자 공역 등을 방지하는 역할을 한다.

이 설정을 추가하여 SSL검증 자체를 비활성화 하는 방법은 임시조치일 뿐이다.

2. 인증서 저장소 갱신하여 최신 루트 인증서를 포함하도록 하기

sudo yum update ca-certificates

 

CASE.2

yum: command not found

 

- 원인

yum 패키지 관리 명령어가 시스템에 설치되어 있지 않거나, PATH 환경 변수에 포함되어 있지 않기 때문

yum은 CentOS에 기본적으로 제공되는 패키지 관리도구이다.

 

- 확인

which yum

을 했을 때 경로가 올바르게 뜨는지 확인

➡ 안뜨면 재설치

dnf install yum

➡ 뜨는경우 yum --version으로 버전 확인

 

- 해결 (?)

확인 해보니, 경로가 정상적으로 확인 되었고, 버전도 잘 떴다.

이상해서 다시 명령어를 작성했더니 잘 작동됨 😂

 

CASE.3

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock er ror was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 알 수 없는 오류"

 

- 원인

2024년 6월 30일 CentOS 7 EOS 로 인한 repository 주소 다른 주소로 변경 

 

- 해결 

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

다른 주소로 변경 해주면 된다.