TIL: Travis CI vs Jenkins

CI/CD란?

CI (Continuous Integration)

Build, Test를 실행하는 프로세스를 말하며, 이러한 통합 프로세스를 상시로 실시해주는 것을 의미한다.
한 마디로, 통합을 지속으로 수행하는 것이 CI

CI에 필요한 것

  • 형상관리 : Git, SVN
  • Build Tool : Gradle, Ant
  • CI Tool : Travis CI, Jenkins

CD (Continuous Delivery or Deploy)

짧은 주기로 소프트웨어를 개발하는 소프트웨어공학적 접근의 하나로, 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하기 위한 것이다. 소프트웨어를 더 빠르게, 주기적으로 빌드하고 테스트하고 출시하는 것을 목표로 한다.
한 마디로, 지속적인 배포를 한다는 뜻이다.

짧은 주기로 개발중인 소프트웨어를 배포하고 그 과정을 자동화하겠다는 뜻이다.

Travis CI

Travis CI는 Github에서 진행되는 오픈소스 프로젝트를 위한 지속적은 통합관리 서비이다.

기능

  • 관리가 필요없는 무료 클라우드 기반 호스팅 제공
  • Linux & Mac OS X에서 동시에 테스트할 수 있다.

장점

  • 손쉬운 프로젝트 설정 및 서비스 연동, Github과 seamless한 통합
  • 오픈 소스 프로젝트 사용시 무료로 사용 가능
  • 전용 CI/CD 서버가 필요하지 않다.
  • 모든 작업이 독립적으로 동작한다.
  • 빌드 매트릭스 제공

단점

  • 제한된 옵션 제공
  • 좀 느린 속도
  • Private 저장소는 유료이다.

Jenkins

기능

  • 다양한 시스템에서 사용 가능 (windows, unix, os x)
  • 업데이트 통해서 많은 플러그인 지원
  • 개발자는 플러그인을 통해서 확장 기능을 추가할 수 있다.
  • 대부분의 통합 환경 지원
  • 다양한 작업 모드 포함
  • 다양한 조건의 빌드를 시작할 수 있다.
  • Kubernetes, Docker 및 기타 여러 프로그램과 호환 가능

장점

  • 무료 사용
  • 사용자 정의 옵션
  • 방대한 양의 플러그인
  • 다양한 적용 사례 및 풍부한 레퍼런스
  • Remote Access API 제공

단점

  • 무료로 사용하지만, 별도로 서버가 필요하다.(서버의 비용이 발생할 수 있다.)
  • 시스템 구성 및 사용자 정의 시간이 오래 걸릴 수 있다.