젠킨스와 CI/CD

최지환·2023년 2월 13일
1

프로젝트-모각코

목록 보기
1/7
post-thumbnail

CI/CD 란?

CI 지속적인 통합(Continuous Integration) /CD(Continuous Delivery)

빌드/테스트 자동화 과정. CI 는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration) 을 의미함.

애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합 되기 때문에, 여러 개발자가 동시에 애플리케이션 개발 코드에 작업을 할 경우 충돌할 수 있는 문제 해결 가능.

CD 지속적인 배포 (Continous Delivery)

  • 지속적 배포 : 빌드, 테스트 및 배포 단계를 자동화하는 DevOps 방식을 논리적 극한까지 끌어올린다.
    → 코드 변경이 파이프라인의 이전 단계(CI 과정)를 모두 성공적으로 통과하면 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포

CI CD종류 : 

- Jenkins
    - - 무료이고, 사용자 층이 많아 Reference 가 많음
    - 설치 및 사용이 간단
    - 지원하는 플러그 인이 많음
    - JAVA 기반
    - Jenkins 용 EC2를 따로 띄워야하는 단점이 있음.

- CircleCi
    - 일정 한도내에서 무료 사용가능 이메일로 알림 전송,
    - 유료인 경우 한달에 15달러
    - git 에 push를 하면 자동으로 테스트를 한 검사 결과를 메일 알림으로 보내줌. 배포까지 가능
    
- TravisCi
    - 무료 버전과 유료 버전이 있음
    - gitHub와 연동하여 CI가 자동 동작하고 push가 아닌 PR에도 반응하도록 설계가 되어있음
    - 간결하고 직관 적인 웹 인터페이스를 제공하는 인터넷 기반의 CI 서비스
    
- TeamCity
    - DevOps 파이프 라인을 세부적으로 시각화 해줌.
    - 테스트 기록을 유지해주고, 불안정한 테스트의 경우 신뢰도 낮음으로 표시
    - 팀원간 협업을 하는데 매우 용이
    - IDE(JetBrains)에 통합하면, 브랜치를 따로 생성하거나 코드를 커밋할 필요 없이 빌드, 확인, 자동화 테스트 까지 수행
    
- Github Actions
    - github 리포지토리에서 직접 워크플로를 만들 수 있음. CI/CD 를 한곳에서 관리가능,
    - 다른 CI/CD 에 비해 진입장벽이 낮음. → github을 사용한다는 전제

젠킨스 적용하기 전

우선 jenkins를 설치함에 있어서 2가지의 방법이 있었다.

  1. 로컬에 jenkins를 설치하는 것

  2. aws - ec2 에 jenkins 를 설치하는 것

둘 중 하나를 고민하다가, 결국 2번째 방식으로 하기로 했다.

그 이유는 프로젝트를 함에 있어서 언젠가 aws를 사용해야 했고, 인프라를 구축함에 있어 최대한 많은 경험 및 공부를 해보고자 EC2와 도커를 활용하여 jenkins를 설치하기로 했다!!


사실 이거를 하면서 정말 많은 삽질을 했기 때문에 따로 적어두려고 한다.

→ 바로 설치도 해보고, 도커를 사용하기도 함.

내가 ec2 에서 사용한 os는 우분투이다.

관련 레퍼런스가 매우 많았기 때문!

그럼 이제 해보자.

우분투에 jenkins 설치하기

설치는 jenkins 공식 문서를 참고 해서 진행했다.

젠킨스 설치 공식 문서 - 리눅스 버전

젠킨스를 설치하기에 앞서 java 를 설치해야 했다.
나는 jdk11 을 설치했는데, 후에 소나큐브를 사용하려면 jdk-11이 필요하기 때문이다.

참고 : https://docs.sonarqube.org/latest/requirements/requirements/ → 소나큐브 설치시 요구 사항

JDK 설치

sudo apt update
$ sudo apt install openjdk-11-jre
$ java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2, mixed mode, sharing)

jenkins 설치

  1. jenkins 설치 → LTS 를 설치함
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
  1. 접속

이후 ec2 보안그룹에 8080 포트를 열어 주고 접속를 해보자.
웹 브라우저를 통해 Ip주소:8080 에 접속을 하자

초기 비밀 번호를 입력해야한다.

초기 비밀 번호는 다음 명령어로 확인 할 수 있다.

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

비밀 번호를 입력하자

그후 install suggested plugins 를 선택해 플러그인을 설치한다.

이후 회원 가입 및 로그인을 완료하면 다음과 같이 젠킨스 창을 확인 할 수 있다.


도커로 설치하는 방법

  1. sudo apt-get update
  2. sudo apt-get -y upgrade

우분투에 도커 설치

  1. sudo apt-get install docker-ce docker-ce-cli [containerd.io](http://containerd.io/)
    Docker Engine 와 containerd 최신 버전을 설치한다.
  2. sudo docker run hello-world 를 통해 Docker CE가 정상적으로 설치되어 있는지 확인한다.

  1. sudo 없이 docker 명령어를 사용하라면, ‘docker’ 그룹에 사용자를 추가 해야만 한다.
    sudo usermod -aG docker ubuntu 를 통해 ubuntu 사용자를 추가한다.

  2. ec2 로그아웃을 진행하고, SSH 재접속을 한다.

도커로 젠킨스 설치하기

  1. 젠킨스 컨테이너를 실행해야한다.

docker run -d -p 8080:8080 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -u root jenkins/jenkins 를 통해 젠킨스 최신 이미지를 설치한다.

  • -p : 젠킨스는 기본으로 8080 포트를 사용함.
  • -v /home/jenkins:/var/jenkins_home: 호스트의 /home/jenkins 디렉터리와 젠킨스 컨테이너 내부의 jenkins_home 디렉터리를 매핑시켜 준다. 이를 통해 호스트와 젠킨스 컨테이너 내부가 파일을 공유할 수 있도록 해준다.
  • -v /var/run/docker.sock:/var/run/docker.sock
    • 젠킨스를 사용해서 도커로 말아진 nest 서버와 db를 build 해야한다.
      이를 위해 젠킨스 컨테이너 내부에서 도커 명령어를 사용해야하고 호스트에 도커를 bulid 해야하기 때문에 var/run/docker.sock:/var/run/docker.sock 으로 호스트와 컨테이너 내부 도커 데몬을 매핑한다.
  1. 접속

이후 ec2 보안그룹에 8080 포트를 열어 주고 접속를 해보자.
웹 브라우저를 통해 Ip주소:8080 에 접속을 하자

초기 비밀 번호를 입력해야한다.

도커로 jenkins를 설치한 경우 docker logs jenkins를 입력하면 비밀번호가 나온다.

비밀 번호를 입력하자

그후 회원 가입 창이 나오는데 amdin으로 생성해서 진입하였다. → 회원가입은 자유롭게

그후 install suggested plugins 를 선택해 플러그인을 설치한다.

이후 회원 가입 및 로그인을 완료하면 다음과 같이 젠킨스 창을 확인 할 수 있다.

0개의 댓글