IT/IT 지식

CI/CD 파이프라인

괘창 2024. 6. 9. 20:10

 

 

 

CI / CD란 ?
개발부터 배포까지 모든 단계를 자동화 하는 것이다.

 

 

CI ( Continuous Integration)

CI는 Continuous Integration의 약자로 지속적 통합이란 의미다.

애플리케이션의 새로운 코드들이 자동으로 빌드 및 테스트 되어 레포지토리에 통합되는 것을 의미한다.

 

CI의 포인트는

  • 개발자들은 최대한 작은 단위로 만들어서 개발해가며 빈번하게 merge 해야한다.
  • 애플리케이션의 빌드, 테스트, 병합하는 과정을 주기적으로 자동화시켜야 한다.

위 포인트들을 따라가면

  • 병합 시 충돌 예방이 가능하고
  • 코드의 결함이나 문제점을 빠르게 발견할 수 있다.

또한, 문제점을 빠르게 해결할 수 있는데, 이는 작은 단위로 빈번하게 merge하기 때문에 문제 발생 범위가 작다.

* 빈번하게 merge해도 빌드, 테스트가 자동이라 간편! 결과적으로 코드의 품질이 향상된다.


CD

CD는 Continuous Delivery/Deployment의 약자로 지속적 제공/배포란 의미다.

CI를 통해서 빌드, 테스트가 완료되어 배포될 준비가 끝난 애플리케이션을

개발자가 수동으로, 혹은 자동으로 배포를 진행하는 것이다.

수동일 때 Continuous Delivery, 자동일 때 Continuous Deployment라 한다.

https://llshl.tistory.com/50 참고

 


CI / CD 파이프라인
5줄 요약

 

  1. 개발자가 작은 단위로 코드를 생성하고 메인 레포지토리에 merge를 하면
  2. 자동으로 빌드되고
  3. 자동으로 테스트되어
  4. 릴리즈 되고(배포 준비 완료)
  5. 배포 된다.

https://llshl.tistory.com/50 참고

 


CI / CD를 위한 도구

https://ichi.pro/ko/hyeonjae-sayong-ganeunghan-choegoui-ci-cd-dogu-27gaji-194611649728144

 

Jenkins
  • 무료(단, 별도 서버 필요)
  • 다양한 플러그인과 IDE 지원
  • 많은 사용자와 많은 문서
  • 규모가 작은 프로젝트의 경우 설정하는데 리소스 낭비가 발생할 수 있다.
  • 지라와 연동이 불편하거나 완벽하지 않을 수 있다.

무료 서비스와 많은 사용자를 가졌다는 점

특히 많은 문서와 선례들을 통해 대부분의 문제상황에 대첳라 수 있다.

 

다만, 설정과 운영하는 측면에서 불편하다는 평이 있다.

손도 많이가고 특히 별도의 서버를 준비해 해당 서버에 설치하여 운영하는 방식이기 때문에 무료인듯 무료아는 느낌

※ 주로 t2.medium을 권한다. 규모가 적은 프로젝트에서는 비추천

 


Travis
  • 깃 허브와 연동
  • 빌드 과정을 한 눈에 이해하기 쉽다.
  • 초기 설정이 젠스킨에 비해 간편(YML 파일을 통한 설저)
  • 별도의 서버가 필요 없다. Travis에서 알아서 VM으로 호스팅 해줌
  • 기업용의 경우 다소 비싸다(월 129달러)
  • 로컬에서 CI환경과 동일한 빌드환경을 제공하지 않는다.
  • 젠스킨에 비해 플러그인이 다양하지 않다.
  • .travis.yml 파일을 수정하고 테스트하려면 git push를 반복해야 한다.

Github Action
  • 복잡한 과정 없이 바로 깃 허브에서 사용할 수 있다.
  • 빌드 과장을 눈으로 확인하기 쉽다.
  • 깃허브의 모든 이벤트에 대한 작업을 제공하고 다양한 언어와 프레임워크를 지원한다.
  • 젠스킨보다 빠르다.
  • public은 무료, private 저장소의 경우 매월 3000분 무료
  • 문서가 비교적 부족하다.
  • UI에서 개별 워크플로우 실행을 삭제할 수 없다.
  • 워크플로우에서 단일 작업만 다시 실행할 수 없다.