Jenkins를 이용한 Spring 프로젝트 CI / CD 구축 (서버 환경 설정)

SionBackEnd·2023년 3월 7일
0

Jenkins를 시작하기전 가볍게 CI CD 가 무엇인지 말해보자.

CI 란 지속적인 통합(Continuous Integration) 한마디로 빌드와 테스트 자동화
CD 란 지속적인 전달(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment) 한마디로 배포 자동화
즉, 코드가 수정이 되면 빌드와 테스트를 자동으로 확인하고 이상이 없다면 운영 서버에 실행하여 유저에게 새롭게 달라진 프로그램을 더욱 빠르고 간편하게 제공할 수 있다.

Jenkins를 이용하여 어떤 흐름으로 진행할 것인가?

나는 지금 깃헙을 이용하여 코드를 관리하고 있다. 만약 코드의 변경을 감지하면 Jenkins서버로 변경된 코드를 전송하고 Jenkins는 빌드를 진행한다. 빌드에 성공하면 Jenkins의 codeDeploy플러그인을 실행시켜 빌드에 성공한 프로젝트를 S3에 전송한다. 그리고 AWS에서 운영중인 서버에 포트를 중단시키고 새롭게 빌드된 jar파일을 가지고 프로그램을 실행시킨다.

실습 환경

Jenkins 서버 : 네이버 플랫폼 클라우드 서비스 / [Compact] 1vCPU, 2GB Mem [g1] / Jenkins-CentOS-7.8
운영 서버 : AWS EC2 프리티어
소스형상관리 : GitHub
자바 버전 : 11, gradle 7.5.1 기본적으로 자바는 서버에 다운을 받으셔야합니다.

Jenkins 서버 설정

네이버 클라우드 플랫폼을 사용하고 운영체제로 CentOS를 이용하였기 때문에 각자 운영체제에 맞는 CLI 명령어를 사용하셔야합니다.

네이버 클라우드 플랫폼을 이용시 CLI로 서버 접속

ssh root@서버접속용공인IP -p 외부포트 를 입력하고
서버 관리 및 설정 변경 탭에서 비밀번호를 확인후 터미널에 입력해주면 접속이 가능하다.

젠킨스 gradle 확인

서버에 다운되어 있는 gradle과 내 프로젝트의 gradle이 동일해야한다. 터미널로 돌아가자.

gralde 다운로드 
wget https://services.gradle.org/distributions/gradle-${gradle_버전}-bin.zip -P /tmp
다운받은 zip파일 압축 해제 
unzip -d /opt/gradle /tmp/gradle-*.zip
gradle 환경변수를 설정
export PATH=$PATH:/opt/gradle/gradle-${gradle_버전}/bin

스왑 메모리 설정

서버의 메모리가 2기가 밖에 없어서 스왑 메모리를 설정하여 속도를 더욱 올릴 수 있다.
스왑 메모리 설정 하는 방법

스왑 메모리란, 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 의미합니다. 실제 디스크 공간을 메모리처럼 사용하는 개념이기 때문에 가상 메모리라고 할 수 있습니다

젠킨스 설치

만약 네이버 클라우드 플랫폼에서 jenkins 어플리케이션이 다운로드 되어있는 서버를 사용하신다면 jenkins 포트만 원하는 포트로 변경하시면됩니다.

Jenkins 설치

아래의 명령어를 실행하여 jenkins repository를 설정파일을 생성

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

https://pkg.jenkins.io/redhat-stable/jenkins.repo 경로의 파일을 다운로드 받아 /etc/yum.repos.d/jenkins.repo 경로에 파일을 다운로드 받는 명령어 입니다.
그 다음 아래 명령어를 입력하여 key를 import 합니다.

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Jenkins 설치 준비가 완료

yum install jenkins

젠킨스 접속 포트 변경 방법

터미널에 아래의 명령어를 작성하시고 스크롤을 내리다보면 port 번호 설정하는 값이 JENKINS_PORT="8080"으로 되어있을 것입니다.

Jenkins Version 2.335이전
vi /etc/sysconfig/jenkins

Jenkins Version 2.335 이후 
sudo vim /lib/systemd/system/jenkins.service

원하시는 포트번호를 입력하시면 됩니다.

포트번호 방화벽 활성화

포트번호를 변경 후 중요한점은 변경한 포트의 방화벽을 열어주셔야 한다는 점입니다.

firewall-cmd --permanent --add-port=변경한포트/tcp
firewall-cmd --reload

열어주지 않는다면, 접속이 불가능합니다.

firewalld FirewallD is not running 에러를 만난다

systemctl start firewalld 을 작성 후 다시 포트를 열어주는 명령어를 입력하면 success라고 응답 받을 겁니다.

마지막으로 Jenkins를 멈추고 다시 실행 시킵니다.

서버 부팅시 Jenkins 자동 실행
systemctl enable jenkins
젠킨스 중지
systemctl stop jenkins
젠킨스 실행
systemctl start jenkins
젠킨스 상태 확인 
systemctl status jenkins

젠킨스 웹브라우저 접속

접속 방법 -> 인터넷 브라우저에 아래의 url 입력 
http://서버아이피:지정한포트

초기 비밀번호 확인 명령어

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Install suggested plugins를 누르고 기다린다.






외부 라이브러리 다운로드 하는 방법

CentOS Redis 설치하기
구글 크롬 설치 방법
크롬드라이브 110.0.5481.77버전
구글 그롬 및 크롬 드라이브 권한 설정
CentOS에 Mysql 다운 받기
CENTOS 7 DOCKER 설치 및 컨테이너 사용 방법
Redis Docker 도커 이미지 설치하기 - 아직도 직접 설치하시나요? 시리즈
도커 권한문제 해결하기: "Got permission denied while trying to
[Jenkins] Ubuntu Jenkins에서 Docker permission denied 문제 수정

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글