화면이 안보일 경우 오른쪽 밑에 날씨 버튼 누르면 보입니다.
Ubuntu 서버에 젠킨스 설치하는 방법에 대해 정리
젠킨스(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
Jenkins Version 2.335 이전 포트 변경방법 (작업 안해도 무관)
기본 포트 8080 수정이 필요하지 않을 경우 8번 작업은 넘어가도 무관하다.
$ sudo vi /etc/default/jenkins
※기존 8080을 사용하고 있어서 9000 으로 변경가능합니다.
Jenkins Version 2.335 이후 포트 변경방법 (작업 안해도 무관)
※ 기본 포트 8080 수정이 필요하지 않을 경우 8번 작업은 넘어가도 무관하다.
$ sudo vi /lib/systemd/system/jenkins.service
※ 필자의 경우 기존 8080을 사용하고 있어서 9000 으로 변경했다.
Environment="JENKINS_PORT= 9000"
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 -
Jenkins 서비스 재기동
$ sudo service jenkins restart
Jenkins 서비스 상태 확인
$ sudo systemctl status jenkins
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
'서버작업 > Jenkins' 카테고리의 다른 글
Jenkins 프로젝트 별 정렬 (0) | 2022.07.15 |
---|---|
Gradle Jenkins 배포 (0) | 2022.07.15 |
spring legacy배포(tomcat) (0) | 2022.07.12 |
젠킨스 배포 프로젝트 생성(기본) (0) | 2022.07.07 |
Jenkins Home directory 변경(linux) (0) | 2022.07.01 |