Jenkins 버전 업그레이드
Jenkins를 업그레이드했더니 포트 설정이 초기화되어 접속이 안 되는 경험을 해보셨나요?
Jenkins 업그레이드 는 보안 패치, 플러그인 호환성, JDK 지원 정책 변경 때문에 필수적이지만, 서비스 파일 초기화라는 함정이 있습니다. 사전 백업 없이 업그레이드하면 커스터마이징한 설정이 날아갈 수 있습니다.
왜 업그레이드가 필요한가
Jenkins LTS는 약 12주 주기로 릴리스됩니다. 업그레이드를 미루면 보안 취약점에 노출되거나, 신규 플러그인과 호환성 문제가 발생할 수 있습니다.
업그레이드 전 사전 작업
| 항목 | 설명 |
|---|---|
| 백업 | $JENKINS_HOME 디렉토리 전체 백업 |
| 플러그인 호환성 확인 | 주요 플러그인이 새 버전과 호환되는지 확인 |
| 서비스 파일 백업 | /usr/lib/systemd/system/jenkins.service 복사 |
| 현재 버전 확인 | Jenkins 대시보드 하단 또는 jenkins --version |
# JENKINS_HOME 백업
sudo cp -r /var/lib/jenkins /var/lib/jenkins_backup_$(date +%Y%m%d)
# 서비스 파일 백업
sudo cp /usr/lib/systemd/system/jenkins.service /usr/lib/systemd/system/jenkins.service.bak
업그레이드 절차
1. Jenkins 정지
sudo systemctl stop jenkins
2. YUM을 사용한 업그레이드
sudo yum update jenkins -y
3. 서비스 파일 확인 및 재시작
sudo systemctl daemon-reload
sudo systemctl start jenkins
업그레이드 후 확인 사항
업그레이드 과정에서 서비스 파일(jenkins.service)이 기본값으로 덮어씌워질 수 있습니다. 이전에 커스터마이징한 설정(포트, JDK 경로 등)이 초기화되었는지 반드시 확인해야 합니다.
트러블슈팅
포트 초기화 문제
증상: 업그레이드 후 기존에 사용하던 포트(예: 45000)로 접속이 되지 않습니다.
** 진단 과정:**
# 1. 포트에서 프로세스가 실행 중인지 확인
lsof -i:45000
# 2. Jenkins 서비스 상태 확인 (active이지만 다른 포트에서 실행 중)
systemctl status jenkins
# 3. 서비스 파일에서 포트 설정 확인
grep JENKINS_PORT /usr/lib/systemd/system/jenkins.service
** 원인:** YUM 업그레이드 시 jenkins.service 파일이 기본값(JENKINS_PORT=8080)으로 초기화되었기 때문입니다.
** 해결:**
# 서비스 파일에서 포트를 다시 수정
sudo vi /usr/lib/systemd/system/jenkins.service
Environment="JENKINS_PORT=45000"
sudo systemctl daemon-reload
sudo systemctl restart jenkins
** 팁:** 업그레이드 전에 서비스 파일을 백업해두면, diff 명령어로 변경된 부분을 빠르게 확인할 수 있습니다.
BASH diff /usr/lib/systemd/system/jenkins.service /usr/lib/systemd/system/jenkins.service.bak
JDK 버전 EOL 대응
** 증상:** Jenkins 대시보드에 "Java 17 support will end on March 31, 2026" 경고 메시지가 표시됩니다.
** 원인:** Jenkins가 특정 JDK 버전의 지원을 종료(EOL, End of Life)할 예정이므로, 상위 버전으로 업그레이드가 필요합니다.
** 해결:**
# 1. 서비스 파일에서 JAVA_HOME 경로 수정
sudo vi /usr/lib/systemd/system/jenkins.service
Environment="JAVA_HOME=/app/jdk-21"
# 2. 변경 사항 적용
sudo systemctl daemon-reload
sudo systemctl restart jenkins
Jenkins의 JDK 지원 정책은 공식 문서에서 확인할 수 있습니다. EOL 이전에 미리 전환하여 빌드 중단을 예방하는 것이 좋습니다.
업그레이드 체크리스트
업그레이드 후 아래 항목을 순서대로 점검합니다.
| 순서 | 점검 항목 | 확인 방법 |
|---|---|---|
| 1 | Jenkins 기동 상태 | systemctl status jenkins |
| 2 | 포트 설정 | ss -tnlp | grep <PORT> |
| 3 | JDK 경로 | 서비스 파일의 JAVA_HOME 확인 |
| 4 | 웹 UI 접속 | 브라우저에서 접속 확인 |
| 5 | 플러그인 상태 | Manage Jenkins > Plugins |
| 6 | 파이프라인 테스트 | 주요 Job 수동 빌드 실행 |