Ubuntu 서버에 젠킨스 설치하는 방법에 대해 정리한다. 설치법에 앞서 간단히 젠킨스(Jenkins)란 무엇인지, 왜 사용하는지 알아보고 설치 방법에 대한 내용을 공유하려고 한다.
젠킨스(Jenkins)란?
젠킨스란 서버에 애플리케이션을 자동으로 빌드하고 배포하게 도와주는 CI/CD 툴이다. 오픈 소스 패키지로 Ubuntu 환경에서 기본적으로 제공해주는 패키지 모듈 중 하나다.
젠킨스를 사용하면 애플리케이션을 서버에 실행시키는 과정을 자동화시킬 수 있다. 여기서 실행시키는 과정이란 소스코드의 최신화 -> 빌드 -> 배포 -> 실행
등의 단계를 나타내는데, 개발자가 하나씩 손으로 진행해야 했던 작업들을 통합할 수 있다.
덧붙여, 젠킨스는 각 단계마다 에러가 있는지, 혹은 성공적으로 작업이 끝났는지에 대해 테스트 및 로깅 기능을 제공한다. 애플리케이션 배포 단계에서 실패를 하더라도 왜 실패했는지 개발자가 모니터링할 수 있는 환경을 제공해주기도 하며, 잘못된 소스가 서버에 올라가지 않도록 롤백과 같은 기능도 제공한다.
젠킨스 설치 가이드
설치에 대해서 나는 총 5 단계로 나누어 보았다. 젠킨스의 단순 실행뿐만 아니라 실행 환경 설정에도 추가 작업이 요구되기에 필요 가이드가 길어졌다.
- Java 설치
- 젠킨스 설치
- 젠킨스 실행
- 방화벽 설정
- 젠킨스 접근
1. Java 설치
젠킨스 실행에는 8 혹은 11 버전 Java 가 필수적으로 요구된다. 그렇기 때문에 젠킨스 설치 전, Linux 패키지 매니저로 jdk 혹은 jre를 미리 설치해야 한다. 나는 해당 서버에서 Java 실행 환경만 필요했기 때문에 8 버전의 jre를 설치했다.
# Java jre 8 버전 설치
sudo apt-get install openjdk-8-jre
2. 젠킨스 설치
Ubuntu 패키지에 포함된 젠킨스는 종종 최신 버전에서 밀린 버전을 제공한다. 만약, 최신 버전의 젠킨스를 사용하고자 하는 유저라면 뒤 두 가지 과정을 진행해주는 것이 좋다.
첫 번째는 서버 시스템에 저장소 키값(Repository Key)을 다운받아 저장하는 것이다. 실행이 성공한다면 터미널 콘솔에 'OK' 값을 반환할 것이다.
# 시스템에 저장소 키 값 추가
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
> OK
두 번째 과정은 데비안(Debian) 패키지 저장소 주소를 서버의 sources.list 에 추가하는 작업이다.
# sources.list에 주소값 추가
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
이제 본격적으로 젠킨스를 서버에 설치해주면 된다. apt를 업데이트시켜 새 저장소를 생성하게 한 뒤, jenkins를 설치하도록 하자.
# apt 최신화
sudo apt update
# 젠킨스 설치
sudo apt install jenkins
3. 젠킨스 실행
패키지 설치가 끝나면 바로 서버에서 실행시켜보자. 아래 명령어로 실행과 실행 상태 체크를 진행할 수 있다. systemctl
혹은 netstat
명령어로 확인할 수 있으며, 상태값이 active 혹은 8080 포트가 활성화되었다면 실행은 성공적으로 이루어졌다 생각하면 된다.
# 실행
sudo systemctl start jenkins
# 실행 확인 (systemctl)
sudo systemctl status jenkins
> ● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-04-19 06:00:45 UTC; 32min ago
Main PID: 13482 (java)
Tasks: 39 (limit: 4915)
CGroup: /system.slice/jenkins.service
└─13482 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
# 실행 확인 (netstat)
netstat -tnlp
> Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN -
4. 방화벽 설정
젠킨스의 기본 실행 포트는 8080
번이다. 젠킨스가 실행되면 웹 브라우저로 동작하기 때문에 외부에서 확인할 수 있어야 한다. 그렇기 때문에 이 실행 포트에 대한 방화벽을 허용하게끔 설정할 것이다. 덧붙여 나는 방화벽 정책 설정 시, 서버에 ssh 접근을 허용하는 룰도 추가하였다.
# 젠킨스 실행 포트 접근 허용 (8080)
sudo ufw allow 8080
# ssh 접근 허용 규칙 추가
sudo ufw allow OpenSSH
# 서버 방화벽 상태 확인
sudo ufw status
To Action From
-- ------ ----
8080 ALLOW Anywhere
OpenSSH ALLOW Anywhere
8080 (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
만약 방화벽 상태 확인 과정에서 반환값이 inactive
일 수 있다. 서버 방화벽이 비활성화되어 있는 상태라고 할 수 있는데, 아래 명령어로 방화벽 설정을 활성화시켜주고 다시 상태 확인을 하면 된다.
# 방화벽 활성화
sudo ufw enable
5. 젠킨스 설정
위 과정을 잘 따라왔다면 웹 브라우저에서 우리가 설치한 젠킨스 화면을 확인할 수 있다. http://[ip 혹은 domain]:8080
을 주소창에 입력하면 아래와 같은 화면을 확인할 수 있다. 우선 이 화면까지 접속할 수 있는 거면 서버에서의 설치는 잘 이루어졌다 보면 된다.
화면 입력창에 접근 코드를 입력하라고 명시되어 있다. 화면 안에 빨간색으로 하이라이트 된 경로를 참고해 접근 코드값을 얻을 수 있다. 코드값은 총 32자리 문자열이고, 아래 명령어를 서버에서 실행하면 된다.
# 접근 코드 확인 (32자리 문자열 반환)
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
마치며
지금까지 젠킨스 설치 및 구동에 대해 알아보았다. 하지만, 아직 실제로 젠킨스에 대한 사용 설정(예를 들어, plugin, credential, job 등)에 대한 것도 그렇고 실제 CI/CD 기능 사용법에 대해 소개하지는 못했다. 이어지는 포스트에서 젠킨스에 대한 보다 자세한 내용을 공유할 수 있도록 하겠다.
'Server & Network > Linux' 카테고리의 다른 글
[Linux] Ubuntu 유저 생성, 관리자 권한, 비밀번호 변경 (0) | 2022.04.26 |
---|---|
[Linux] 서버에서 네트워크 속도 측정하기(speedtest-cli) (0) | 2022.04.21 |
[Linux] LVM(Logical Volume Manager) 사용법 - 다수의 디스크를 하나로 (0) | 2022.04.20 |
[SSH] "REMOTE HOST IDENTIFICATION HAS CHANGED" 이슈 (0) | 2022.04.16 |
[Apache] Apache2 기본 구조 및 설정 (0) | 2022.04.09 |
댓글