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 제공
단점
- 무료로 사용하지만, 별도로 서버가 필요하다.(서버의 비용이 발생할 수 있다.)
- 시스템 구성 및 사용자 정의 시간이 오래 걸릴 수 있다.