CI 란 지속적인 통합(Continuous Integration) 한마디로 빌드와 테스트 자동화
CD 란 지속적인 전달(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment) 한마디로 배포 자동화
즉, 코드가 수정이 되면 빌드와 테스트를 자동으로 확인하고 이상이 없다면 운영 서버에 실행하여 유저에게 새롭게 달라진 프로그램을 더욱 빠르고 간편하게 제공할 수 있다.
나는 지금 깃헙을 이용하여 코드를 관리하고 있다. 만약 코드의 변경을 감지하면 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 기본적으로 자바는 서버에 다운을 받으셔야합니다.
네이버 클라우드 플랫폼을 사용하고 운영체제로 CentOS를 이용하였기 때문에 각자 운영체제에 맞는 CLI 명령어를 사용하셔야합니다.
ssh root@서버접속용공인IP -p 외부포트 를 입력하고
서버 관리 및 설정 변경 탭에서 비밀번호를 확인후 터미널에 입력해주면 접속이 가능하다.
서버에 다운되어 있는 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 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
열어주지 않는다면, 접속이 불가능합니다.
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 문제 수정