Jenkins 설치
코드를 push할 때마다 수동으로 빌드하고, JAR 파일을 서버에 직접 올리고 있진 않으신가요?
Jenkins 는 빌드, 테스트, 배포를 자동화하는 오픈소스 CI/CD 서버입니다. Java 기반으로 동작하며, 1,800개 이상의 플러그인 생태계를 통해 GitHub, Docker, Slack 등 다양한 도구와 연동할 수 있습니다.
설치 자체는 간단하지만, 포트 변경과 서비스 등록 같은 초기 설정을 정확히 해두어야 이후 운영이 원활합니다.
사전 요구사항
| 항목 | 요구사항 |
|---|---|
| OS | CentOS 7+ / RHEL 7+ |
| Java | JDK 17 이상 (Jenkins 2.463+) |
| 메모리 | 최소 256MB, 권장 1GB 이상 |
| 디스크 | 최소 1GB (빌드 데이터에 따라 추가 필요) |
Jenkins 설치
1. Jenkins 리포지토리 등록
Jenkins 공식 YUM 리포지토리를 등록합니다.
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-2023.key
2. Jenkins 설치
sudo yum install -y jenkins
Jenkins는
/usr/lib/systemd/system/jenkins.service파일을 통해 systemd 서비스로 등록됩니다. 설치 후 이 파일에서 포트, JDK 경로 등 주요 설정을 변경할 수 있습니다.
systemd 서비스 관리
Jenkins는 systemd를 통해 관리합니다. 아래 명령어로 기동, 정지, 재시작이 가능합니다.
| 명령어 | 설명 |
|---|---|
systemctl status jenkins | 상태 확인 |
systemctl start jenkins | 기동 |
systemctl stop jenkins | 정지 |
systemctl restart jenkins | 재시작 |
systemctl enable jenkins | 부팅 시 자동 시작 등록 |
# Jenkins 기동 및 자동 시작 등록
sudo systemctl start jenkins
sudo systemctl enable jenkins
초기 비밀번호 확인
Jenkins를 처음 실행하면 웹 브라우저에서 초기 설정 마법사가 표시됩니다. 이때 초기 관리자 비밀번호를 입력해야 합니다.
cat /var/lib/jenkins/secrets/initialAdminPassword
이 비밀번호는 보안을 위해 최초 1회만 사용됩니다. 초기 설정 완료 후 관리자 계정을 생성하면 더 이상 사용되지 않습니다.
실행 포트 변경
Jenkins의 기본 실행 포트는 8080 입니다. 다른 서비스와 포트가 충돌하거나, 보안 정책상 다른 포트를 사용해야 할 경우 변경이 필요합니다.
설정 파일 수정
서비스 파일 경로: /usr/lib/systemd/system/jenkins.service
# 서비스 파일에서 포트 설정을 찾아 수정
sudo vi /usr/lib/systemd/system/jenkins.service
Environment="JENKINS_PORT=45000" # 원하는 포트 번호로 수정
변경 사항 적용
서비스 파일을 수정한 후에는 반드시 daemon-reload를 실행해야 systemd가 변경 사항을 인식합니다.
sudo systemctl daemon-reload
sudo systemctl restart jenkins
주의: 1024 미만의 포트(Privileged Port)를 사용하려면 서비스 파일에
AmbientCapabilities=CAP_NET_BIND_SERVICE설정을 추가해야 합니다. 일반적으로는 1024 이상의 포트를 사용하는 것을 권장합니다.
설치 확인
Jenkins가 정상적으로 실행되었는지 확인합니다.
# 서비스 상태 확인
systemctl status jenkins
# 포트 리스닝 확인
ss -tnlp | grep 45000
브라우저에서 http://<서버IP>:<포트>로 접속하여 Jenkins 초기 설정 화면이 표시되면 설치가 완료된 것입니다.
트러블슈팅
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| 서비스가 시작되지 않음 | JDK 미설치 또는 경로 오류 | java -version 확인 후 JDK 설치 |
| 포트 접속 불가 | 방화벽 차단 | firewall-cmd --add-port=45000/tcp --permanent |
| 초기 비밀번호 파일 없음 | Jenkins가 정상 기동되지 않음 | journalctl -u jenkins 로그 확인 |
주의할 점
업그레이드 시 서비스 파일 초기화
YUM으로 Jenkins를 업그레이드하면 /usr/lib/systemd/system/jenkins.service 파일이 기본값으로 덮어씌워질 수 있습니다. 커스터마이징한 포트나 JDK 경로가 초기화되어, 업그레이드 후 갑자기 접속이 안 되는 원인이 됩니다. 업그레이드 전 서비스 파일을 반드시 백업합니다.
Privileged Port 사용
1024 미만의 포트를 사용하려면 서비스 파일에 AmbientCapabilities=CAP_NET_BIND_SERVICE를 추가해야 합니다. 이 설정 없이 80이나 443 포트를 지정하면 서비스 시작이 실패합니다.
정리
| 단계 | 명령 / 설정 |
|---|---|
| 리포지토리 등록 | wget + rpm --import |
| 설치 | yum install -y jenkins |
| 서비스 시작 | systemctl start jenkins && systemctl enable jenkins |
| 초기 비밀번호 | cat /var/lib/jenkins/secrets/initialAdminPassword |
| 포트 변경 | jenkins.service의 JENKINS_PORT 수정 → daemon-reload → restart |
| 접속 | http://<IP>:<PORT> |