티스토리 뷰

CI/CD는 애플리케이션 개발 단계부터 배포 단계까지 자동화 하여 개발한 애플리케이션을 사용자에게 빠르게 제공하는 방법이다.

CI

  • CI는 Continuous Integration의 약자이며 지속적 통합 이란 뜻이다.
  • 여러 개발자가 작성한 코드를 Github, Bitbucket과 같은 코드 형상관리 툴을 이용하여 Repository에 통합하고 빌드 및 테스트가 정상적으로 이뤄지는지 확인하는 과정을 얘기한다.
  • Repository에 개발한 코드들의 변경사항에 대해 주기적으로 변경함으로써 모든 개발자들에게 동일한 작업환경을 제공함으로써 버그를 사전에 미리 발견하고 소프트웨어 품질을 개선하는 장점이 있다.

CD

  • CD는 Continuous Delivery or Continuous Deployment 두 용어의 약자이며 지속적 제공 or 지속적 배포 란 뜻이다.
  • Continuous Delivery는 CI가 정상적으로 완료되었으면 릴리스 할 배포 단계를 거치게 되는데 이때 프로덕션에 배포하기 전에 개발자 or QA팀에서 한번 검증을 하고 정상적으로 되면 그때 수동으로 프로덕션에 배포하는 걸 말한다.
  • Continuous Deployment는 Continuous Delivery와 살짝 비슷하지만 프로덕션 배포를 자동으로 하는걸 의미한다.
  • 지속적으로 제공 및 배포를 함으로 써 빠른시간안에 사용자들에게 서비스를 배포할 수 있으며 개발의 효율성과 릴리즈 기간도 단축할 수 있다.

Jenkins

  • CI/CD 일련의 과정을 편리하게 해주는 도구로 Jenkins, Travis, Github Action이 있는데 이 글에서는 AWS EC2에 Jenkins에 설치하는 방법을 알아보자.

Jenkins 설치

AMI는 Amazon Linux AMI 2를 선택하자.



t2.micro로 생성하면 Jenkins 서버가 죽을 수 있기 때문에 t2.small로 생성을 해두자.



네트워크 설정 탭 오른쪽에 편집버튼을 클릭하면 보안그룹을 편집할 수 있는데 포트번호 22, 8080두개의 포트를 자신의 IP만 허용할 수 있도록 생성하자. 22는 SSH로 접속하기 위해 열어둔 것이고 8080은 Jenkins의 기본포트이다.



SSH로 접근하기 위해 키파일이 있어야 하는데 'jenkins' 라는 이름의 key파일로 생성을 하고 화면 우측의 인스턴스 시작 버튼을 클릭하자.

 

ssh -i pem파일경로 ec2-user@퍼블릭IP

위 명령어로 Jenkins Server에 접근하자.

 

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo amazon-linux-extras install -y java-openjdk11
sudo yum install -y jenkins
sudo systemctl start jenkins.service

Jenkins를 yum repository에 등록 후 설치하자. Jenkins는 JAVA로 돌아가기 때문에 JAVA도 설치하고 Jenkins를 실행해보자.



sudo systemctl status jenkins.service 명령어를 실행했을 때 위 사진처럼 나오면 정상적으로 Jenkins가 실행된 것이다.



퍼블릭IP:8080 으로 접속하면 다음과 같은 화면을 볼 수 있는데 어드민 계정의 암호을 입력해야 하는데 화면에 보이는 파일에 암호가 적혀있다.



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

해당 명령어를 실행하면 암호를 확인할 수 있다.



두가지 선택창이 나오는데 Jenkins에서 추천해주는 추천 플러그인을 설치하자.



Gradle, Git, Github, Pipeline, SSH 등 다양한 Plugin을 알아서 설치해준다.



Admin 계정정보를 입력해준다.



해당화면은 넘어가도 된다. Jenkins의 root url을 지정하는건데 현재 서버의 IP주소 + 포트로 지정하면 된다.



여기까지 오면 Jenkins가 정상적으로 설치되었다.

 

주의

현재 파일시스템에 할당된 용량은 대략 8GB정도 되는데 Jenkins에 설치된 plugin이 많고 작업Item이 많으면 많을수록 가용용량이 급 줄어들어서 Jenkins Server가 뻗을 수 있다. 

 

그래서 Jenkins Server에 plugin을 설치하거나 작업Item이 많아질 수록 용량을 확인하여 여유공간 1GB정도 남았을 때 볼륨 크기를 늘려줘야 뻗지 않는다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함