[CI/CD] #2 우분투에 젠킨스 설치하기

keen.log·2024년 2월 14일
0

CI/CD

목록 보기
2/7
post-thumbnail
이 게시물은 [초보를 위한 젠킨스 2 활용 가이드 2/e]를 참고해서 작성한 내용임을 밝힙니다.

윈도우보다는 우분투에 젠킨스를 설치하는 편이 좋을 것 같아 WSL2를 사용하여 우분투 환경에서 젠킨스를 설치하기로 했다.

1. 전제 조건

  • 4GB 이상의 메모리와 멀티코어 CPU
  • 팀의 인프라스트럭처 상황에 따라 AWS나 디지털오션 같은 클라우드 인스턴스나 VM웨어나 브이스피어 같은 VM, 혹은 일반 PC
  • 우분투 16.04 LTS가 설치된 머신
  • 설치 과정에서 관리자 아이디와 패스워드를 물을 경우를 대비한 관리자 권한
  • 포트 8080이 열려 있어야 한다.

2. 자바 설치

- 패키지 인덱스 업데이트

sudo apt-get update


- 자바 설치 후 JRE(Java Runtime Environment) 설치

sudo apt-get install default-jre

*JRE(Java Runtime Environment)란?
Java 프로그램이 올바르게 실행되기 위해 필요한 소프트웨어. JRE는 Java 프로그램과 운영 체제 간의 통신을 위한 기본 기술이다. JRE는 Java 소프트웨어 작성 시 추가 수정 없이 어떤 운영 체제에서도 실행되도록 모든 리소스를 제공하는 번역기 및 촉진자 역할을 한다.

참고자료: [AWS]JRE란 무엇인가요?


- JAVA_HOME 환경 변수 설정 위해 자바 설치 경로 알아내기 + 자바 경로 복사

update-java-alternatives -l


- /etc/environment 수정 위해 파일 열기

sudo nano /etc/environment


- 연 파일에 복사한 자바 경로 추가

JAVA_HOME="/usr/lib/jvm/java-1.11.0-openjdk-amd64"

경로 추가 후 Ctrl+XCtrl+Y를 눌러 파일을 저장 후 닫고 나온다.


- 변경된 내용 적용

sudo -s
source /etc/environment

❗오류 발생❗

명령어 목적
sudo를 사용하여 환경 변수 파일인 /etc/environment를 실행하려고 시도한다.

오류 원인
source 명령어는 셸의 일부이며 일반적으로 외부 명령어가 아니다. 또한, sudo는 특정 명령어를 루트 권한으로 실행하도록 허용하는 명령어이다. 그러나 source는 셸에 내장된 명령어이며 셸 스크립트를 실행하여 현재 셸 세션으로 환경 변수를 로드한다. sudosource는 동일한 컨텍스트에서 사용되지 않는다.

오류 해결 방법
sudo-s를 사용하여 새로운 루트 셸을 열고 source /etc/environment를 실행하면 루트 권한으로 환경 변수를 로드할 수 있다.

sudo -s
source /etc/environment

sudo-s: 새로운 루트 셸을 생성하여 루트 권한으로 셸을 실행한다.
이렇게 하면 현재 사용자의 환경 설정을 무시하고 루트 셸의 환경으로 전환된다. 그런 다음 새로운 루트 셸에서 source /etc/environment 명령어를 실행하여 /etc/environment 파일을 실행하고 환경 변수를 현재 셸로 로드한다. 이때 source 명령어는 현재 셸의 일부이므로 사용할 수 있다.

참고자료: [Ubuntu ASK] sudo source: command not found 에러 시 해결 방법


3. 젠킨스 최신 안정 버전 설치

- 시스템에 저장소키 추가

OK 결과가 나와야 한다!!

wget --no-check-certificate -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.gpg | \sudo apt-key add -

❗오류 발생❗ OK라고 출력되어 다음 단계를 실행해봤지만 GPG 에러와 함께 젠킨스가 설치되지 않는 결과가 나와 해결 방법을 찾게 되었다ㅠ

명령어 목적
Jenkins 패키지 저장소의 공개 키를 시스템에 추가하여 Jenkins 패키지를 안전하게 설치하고 업데이트할 수 있도록 하는 것이다.

오류 원인
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
이렇게 결과가 나오는데 이 내용은 apt-key 명령어가 더 이상 권장되지 않으며 대신 trusted.gpg.d 디렉토리에서 키링 파일을 관리하라는 경고 메시지이다. 찾아보니 apt-key는 예전에는 APT 패키지 관리 시스템에서 외부 저장소의 GPG 키를 관리하는 데 사용되었지만, 이제는 보안 문제와 관련된 여러 가지 이유로 권장되지 않는다고 한다.

오류 해결 방법 (시스템에 저장소 키 추가/ 데비안 패키지 저장소 주소 추가 내용은 오류 해결 방법이다!)
따라서 이 경고를 해결하려면 apt-key 대신 trusted.gpg.d 디렉토리를 사용하는 방법에 맞게 키를 추가해야 한다. 이를 위해 저장소 키를 직접 다운로드하고 해당 키를 trusted.gpg.d 디렉토리에 추가해야 한다. 저장소 키를 추가 후에는 저장소 주소를 /etc/apt/sources.list.d/ 디렉토리에 저장소 정보를 담은 파일을 생성하여 추가해야 하고 APT 패키지 목록을 업데이트하여 변경 사항을 적용해야한다

- 데비안 패키지 저장소 주소 추가

echo deb https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.gpg

- 패키지 인덱스 업데이트

sudo apt-get update

화면에 보면 Key is stored in legacy trusted. gpg keyring (/etc/apt/trusted.gpg) 내용을 찾아볼 수 있다.

- 대망의 젠킨스 설치!!

sudo apt-get install jenkins

젠킨스 설치에 드디어 성공했다!!


4. 젠킨스 시작, 종료, 재시작하기

- 젠킨스 시작

sudo systemctl start jenkins

- 젠킨스 종료

sudo systemctl stop jenkins

- 젠킨스 재시작

sudo systemctl restart jenkins

*systemctl 리눅스 명령어
서비스를 관리하는 데 사용되는 리눅스 명령어이다. 주로 "systemd"를 사용하는 시스템에서 사용된다. systemd는 대부분의 최신 리눅스 배포판에서 초기화 및 시스템 관리를 위해 사용되는 시스템 및 서비스 관리 프레임워크이다.

systemctl 명령어를 사용하여 다음과 같은 작업을 수행할 수 있다.

  • 서비스의 상태 확인: systemctl status [서비스 이름]
  • 서비스 시작: systemctl start [서비스 이름]
  • 서비스 중지: systemctl stop [서비스 이름]
  • 서비스 재시작: ystemctl restart [서비스 이름]
  • 부팅 시 자동으로 시작되는 서비스 구성: systemctl enable [서비스 이름] or systemctl disable [서비스 이름]
  • 서비스 로그 확인: 서비스 로그 파일은 시스템에 따라 다를 수 있다. 주로 /var/log 디렉토리에 위치한다. 예를 들어, Apache의 경우 /var/log/apache2/error.log에 오류 로그가 저장된다.
  • 시스템 상태 및 로그 확인
    • 시스템 로그 확인: journalctl
    • 부팅 메시지 확인: journalctl -b
    • 특정 서비스 로그 확인: journalctl -u [서비스 이름]
    • 시간 범위 지정하여 로그 확인: journalctl --since "yyyy-mm-dd HH:MM:SS" --until "yyyy-mm-dd HH:MM:SS"
  • 유닛(서비스, 타이머, 소켓 등)의 상태 및 구성 관리
    • systemctl list-unit-files: 시스템에 설치된 유닛 파일 목록을 표시
    • systemctl list-units: 현재 실행 중인 모든 유닛의 상태 표시

- systemctl 명령어로 상태 확인

sudo systemctl status jenkins

결과

0개의 댓글