Jenkins 를 활용한 CI/CD

이성묵·2021년 6월 7일
0
post-thumbnail

CI / CD 란?

CI 란 Continuous Integration , 지속 적인 통합이라는 뜻. 즉 여러 개발자가 작성하거나 수정한 소스를 지속적으로 통합하고 테스트 하여 공유 레포지토리에 통합하는 것을 의미합니다

CD 란 Continous Deployment 또는 Continous Delivery 두용어 모두의 축약어 입니다.

Delivery 는 공유 레포지토리에 자동으로 Release 하는 것,

Deployment는 Production 레벨까지 자동으로 Deploy 하는 것을 의미 합니다.

지속적인 배포 , 즉 개발, 통합 , 배포, 릴리즈 , 테스트를 자동화 하여 지속적으로 배포하는것을 의미 합니다.

CI/CD 파이프 라인의 요소

파이프라인의 단계는 pipeline stage 로 이루어져있다.

  • 빌드 Build - 애플리케이션을 컴파일 하는 단계
  • 테스트 Test - 코드를 테스트 하는 단계
  • 릴리즈 Realese - 애플리케이션을 레포지토리에 제공
  • 배포 Deploy - 코드를 프로덕션에 배포

Continuous Integration

기존의 소스코드 통합과정에서는

  1. 소스코드를 업로드한다
  2. 통합된 코드에서 본인의 코드가 제대로 동작하는지 테스트한다
  3. 통합된 코드가 제대로 빌드되는지 테스트한다
  4. 결과를 확인하고 버그가 있다면 수정한다

git에 푸쉬하고 테스트, 빌드하는 과정이 너무나도 귀찮다.

이러한 과정들을 자동화 함으로써 사람에 의한 오류를 줄이고 시간도 아낄수 있다.

CI 의 과정

  1. 개발자가 로컬 개발환경에서 개발한 소스코드를 형상관리 시스템에 업로드
  2. CI 서버가 변경사항을 감지하고 소스코드를 다운로드
  3. 소스코드를 스크립트에 의해 빌드 및 테스트 수행
  4. 빌드 및 테스트 결과를 알림.
  5. 계속해서 수행한다

CI 의 장점

  • 빌드와 테스트 프로세스가 자동화 되어 코드작성에 더욱 집중할수 있다.
  • 자동화를 통해 수시로 통합할수 있으며, 이를 통해 문제를 조기에 발견하고 조치 할수 있다.
  • 변경된 소스에 대한 단위 테스트 결과를 빠르게 확인할수 있다.
  • 소스코드 통합과 검증에 들어가는 시간이 단축된다.
  • 개발중인 소프트웨어를 언제든지 배포가능

Continuous Deployment or Continuous Delivery

CI/CD 파이프라인의 마지막 과정으로 자동으로 릴리즈 하는 작업

사실상 CD가 되려면 CI 가 선행 되어야 한다

CI 프로세스를 통해 빌드와 테스트를 진행하고 이를 통과한 코드에 대하여 서버에 그 내용을 반영하는 것.

CD 의 장점

  • 개발부터 배포까지 자동화되어 간소화 되기 때문에 피드백을 빠르게 반영 할수있다
  • 장에대응에 빨라진다
  • 여러대의 서버를 동시에 운용시 배포과정이 매우 단축된다

CI/CD Tools

  • Jenkins
  • Travis CI
  • Circle CI

여러가지 툴들이 있지만 저는 Jenkins 를 선택해서 연습 해보았습니다.

참고자료1 참고자료2 참고자료3

0개의 댓글