Jenkins 개요 및 설치 시작하기
Jenkins는 소프트웨어 개발 프로세스에서 지속적 통합(CI) 및 지속적 배포(CD)를 지원하는 강력한 자동화 서버입니다. 빌드, 테스트, 배포와 같은 다양한 작업을 파이프라인 형태로 정의하고 자동화하여 개발 워크플로우를 효율적으로 관리할 수 있도록 돕습니다.
- 프로젝트 단위로 작업을 구성하여 관리 및 실행의 편의성 제공
- 수동 작업 제거를 통한 오류 감소 및 안정성 향상
- 모든 작업의 실행 기록 및 결과 저장으로 문제 진단 및 추적 용이
Jenkins 설치 방법 선택
Jenkins는 사용자의 환경과 요구 사항에 맞춰 다양한 방식으로 설치할 수 있습니다. 공식 Jenkins 웹사이트의 다운로드 페이지(https://www.jenkins.io/download/)에서 원하는 설치 옵션을 선택하고, 제공되는 가이드에 따라 설치를 진행할 수 있습니다. 여기서는 주로 사용되는 두 가지 설치 방식에 대해 다룹니다.
JAR 패키지 이용 Jenkins 실행
Jenkins WAR(Web Application Archive) 파일을 직접 실행하는 방식은 별도의 웹 서버 설정 없이 간편하게 Jenkins를 시작할 수 있는 방법입니다.
1. 자바(Java) 설치 및 Jenkins WAR 파일 다운로드
Jenkins를 실행하려면 자바 런타임 환경(JRE)이 필요합니다. OpenJDK 8 버전을 설치합니다.
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
다음으로 Jenkins WAR 파일을 다운로드합니다. 최신 안정 버전은 다음 미러 사이트 또는 공식 웹사이트에서 받을 수 있습니다.
wget https://mirrors.jenkins.io/war-stable/latest/jenkins.war
2. 필수 환경 확인
자바가 올바르게 설치되었는지, 그리고 Jenkins WAR 파일이 다운로드되었는지 확인합니다.
java -version
ls -l jenkins.war
출력 예시:
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
-rw-rw-r-- 1 root root 78243424 Nov 20 16:41 jenkins.war
3. Jenkins 실행 옵션
java -jar jenkins.war --help 명령어를 통해 Jenkins 실행 시 사용할 수 있는 다양한 옵션을 확인할 수 있습니다. 주로 사용되는 몇 가지 옵션은 다음과 같습니다.
--httpPort: Jenkins가 사용할 HTTP 포트 (기본값: 8080)--httpListenAddress: Jenkins가 요청을 수신할 네트워크 인터페이스 주소--webroot: WAR 파일이 확장될 디렉토리 (기본값:${JENKINS_HOME}/war)--logfile: 로그 메시지를 저장할 파일 경로
참고: Jenkins 홈 디렉토리 설정
Jenkins의 모든 설정, 빌드 데이터, 플러그인 등은 JENKINS_HOME 환경 변수로 지정된 디렉토리에 저장됩니다. WAR 파일로 실행 시 이 변수를 설정하지 않으면 사용자 홈 디렉토리 내에 .jenkins 폴더가 기본값으로 사용됩니다. 특정 위치를 지정하려면 다음과 같이 환경 변수를 설정할 수 있습니다.
export JENKINS_HOME="/path/to/your/jenkins/data"
4. 방화벽 설정
Jenkins 서비스에 접근할 수 있도록 8080 포트를 방화벽에서 허용해야 합니다.
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
설정 확인:
sudo firewall-cmd --list-all
출력 예시 (ports 섹션에 8080/tcp가 있는지 확인):
public (active)
target: default
interfaces: enp0s3
services: ssh dhcpv6-client
ports: 8080/tcp
...
5. Jenkins 실행
JENKINS_HOME 환경 변수를 설정하고 Jenkins WAR 파일을 실행합니다. 예시에서는 특정 IP 주소와 포트를 지정했습니다.
# Jenkins 데이터 저장 경로를 지정 (원하는 경로로 변경)
export JENKINS_HOME="/opt/jenkins_data"
# Jenkins 실행 (IP 주소는 실제 서버 IP로 변경)
java -jar jenkins.war --httpListenAddress=192.168.16.101 --httpPort=8080
Jenkins가 완전히 시작하는 데 몇 분이 소요될 수 있습니다. 터미널에 "Jenkins is fully up and running"과 유사한 메시지가 표시될 때까지 기다립니다.
패키지 관리자를 이용한 Jenkins 설치 (CentOS/RHEL)
CentOS 7.5와 같은 RHEL 기반 시스템에서는 패키지 관리자를 통해 Jenkins를 쉽게 설치할 수 있습니다.
1. Jenkins 저장소 추가 및 설치
먼저 Jenkins YUM 저장소를 시스템에 추가하고 GPG 키를 가져온 다음, Jenkins 패키지를 설치합니다.
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install -y jenkins java-1.8.0-openjdk
참고: java-1.8.0-openjdk는 Jenkins의 의존성으로, 이미 설치되어 있지 않다면 함께 설치됩니다.
2. 방화벽 설정 (또는 비활성화)
Jenkins 서버에 외부에서 접근할 수 있도록 8080 포트를 허용해야 합니다. 운영 환경에서는 특정 IP만 허용하는 것이 좋지만, 테스트 목적으로는 방화벽을 일시적으로 비활성화할 수도 있습니다. (권장하지 않음)
# 8080 포트 허용 (권장)
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# 또는 방화벽 서비스 중지 (주의: 보안에 취약해질 수 있음)
# sudo systemctl stop firewalld
# sudo systemctl disable firewalld
방화벽 상태 확인:
sudo systemctl status firewalld | grep Active
3. Jenkins 서비스 설정 및 시작
Jenkins 서비스 설정을 위해 /etc/sysconfig/jenkins 파일을 편집할 수 있습니다. 예를 들어, Jenkins가 특정 네트워크 주소와 포트에서만 수신하도록 설정할 수 있습니다.
# 설정 파일 열기
sudo vim /etc/sysconfig/jenkins
# 파일 내에서 다음 옵션들을 수정 (예시)
# JENKINS_PORT="8080"
# JENKINS_LISTEN_ADDRESS="0.0.0.0" # 모든 인터페이스에서 수신하려면 0.0.0.0 사용
설정 변경 후 Jenkins 서비스를 시작하고 상태를 확인합니다.
sudo systemctl start jenkins
sudo systemctl status jenkins
sudo systemctl enable jenkins # 부팅 시 자동 시작 설정
Jenkins가 성공적으로 실행되면, ps -aux | grep jenkins 명령어를 통해 Jenkins 프로세스가 실행 중인 것을 확인할 수 있습니다.
ps -aux | grep jenkins
출력 예시 (--httpPort 및 --httpListenAddress 옵션이 적용된 것을 확인):
jenkins 3829 ... /etc/alternatives/java -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --httpPort=8080 --httpListenAddress=192.168.16.101 ...
Jenkins 설치 시 자동으로 jenkins 사용자 계정이 생성됩니다. 기본 비밀번호는 없으며, 필요시 sudo passwd jenkins 명령어로 비밀번호를 설정할 수 있습니다.
Jenkins 초기 설정
Jenkins 서비스가 성공적으로 시작되면 웹 브라우저를 통해 http://[서버 IP]:8080으로 접속하여 초기 설정을 진행합니다.
1. Jenkins 잠금 해제
최초 접속 시 Jenkins는 초기 관리자 비밀번호를 요구합니다. 이 비밀번호는 Jenkins 홈 디렉토리 내의 특정 파일에 저장되어 있습니다. 터미널에서 다음 명령어로 비밀번호를 확인할 수 있습니다.
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
해당 비밀번호를 입력하고 'Continue'를 클릭하여 잠금을 해제합니다.
2. 플러그인 설치
잠금 해제 후 플러그인 설치 화면이 나타납니다. 'Install suggested plugins'를 선택하여 Jenkins 사용에 필요한 기본 권장 플러그인들을 설치하는 것을 권장합니다. 필요한 경우 나중에 추가 플러그인을 설치할 수 있습니다.
3. 관리자 계정 생성
플러그인 설치가 완료되면 첫 관리자 계정을 생성하는 화면이 나옵니다. 사용자 이름, 비밀번호, 이메일 주소 등을 입력하여 계정을 생성합니다.
4. Jenkins URL 설정
Jenkins 인스턴스의 URL을 설정합니다. 이는 Jenkins가 자신을 식별하고 다른 서비스와 연동될 때 사용됩니다. 기본값을 사용하거나, 필요에 따라 실제 서버의 URL로 변경합니다.
5. Jenkins 시작
모든 초기 설정이 완료되면 'Start using Jenkins' 버튼을 클릭하여 Jenkins 대시보드로 이동합니다. 이제 Jenkins를 사용하여 CI/CD 파이프라인을 구축할 준비가 되었습니다.
문제 해결
1. Jenkins 시작 후 "Please wait" 메시지에서 멈춤 현상
Jenkins를 시작한 후 웹 인터페이스에서 "Please wait while Jenkins is getting ready to work ..." 메시지가 오랫동안 표시되며 진행되지 않는 경우가 있습니다. 이는 주로 Jenkins 업데이트 센터에 접근하는 데 문제가 있을 때 발생합니다.
해결 방법: 업데이트 센터 URL 변경
Jenkins의 작업 디렉토리(일반적으로 /var/lib/jenkins)로 이동하여 hudson.model.UpdateCenter.xml 파일을 수정하여 업데이트 센터 미러 URL을 변경합니다.
# Jenkins 작업 디렉토리로 이동
cd /var/lib/jenkins
# hudson.model.UpdateCenter.xml 파일 열기
sudo vim hudson.model.UpdateCenter.xml
파일 내용 중 <url> 태그의 값을 다음과 같이 변경합니다.
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
</site>
</sites>
파일을 저장한 후 Jenkins 서비스를 재시작합니다.
sudo systemctl stop jenkins
sudo systemctl start jenkins
재시작 후 웹 브라우저에서 Jenkins에 다시 접속하여 정상적으로 진행되는지 확인합니다.
2. 플러그인 설치 실패
초기 설정 또는 이후에 플러그인 설치가 실패하는 경우, 주로 네트워크 연결 문제, 방화벽 설정, 또는 프록시 설정 오류가 원인일 수 있습니다. 서버가 외부 네트워크에 정상적으로 접근 가능한지 확인하고, 필요한 경우 프록시 설정을 검토해야 합니다.