CI
CI란, Continuous Integration의 약자로 지속적인 통합을 의미한다.
지속적인 통합은 개발을 진행하면서, 코드의 통합을 지속적으로 진행해 코드의 품질을 유지시키는 것이다.
따라서, Bitrise나 Jenkins와 같은 CI/CD 자동화 툴을 사용하지 않더라도, CI 자체는 가능하다.
하지만 하지만 CI는 지속적으로 진행되기에 매우 번거로운 일이므로 툴을 사용해 자동화 시키는 것이 일반적이다.
지속적인 통합 예시 (자동화 X)
- 모든 개발자는 퇴근 전에 코드를 push 한다.
- push되어 통합된 코드가 정상 동작하는지 테스트한다.
- 통합된 코드가 제대로 빌드 되는지 테스트한다.
- 결과를 정리하여, 버그가 있다면 다음 날 업무 리스트에 추가한다.
지속적인 통합 예시 (자동화 O)
- 모든 개발자는 퇴근 전에 코드를 push 한다.
- 자동화 도구의 결과에 따라 버그가 있다면 다음 날 업무 리스트에 추가한다.
위 예시와 같이, 자동화 도구의 도입으로 지속적인 통합을 이루어내면서 테스트와 빌드의 과정이 자동화되어 보다 간편한 워크 플로우가 형성되었음을 알 수 있다.
CD
CD란 Continuous Deploy 또는 Continuous Delivery의 약자로 지속적인 배포를 의미한다.
소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 하는 것이다.
하지만 소프트웨어를 배포하기 위해서는 빌드와 테스트는 필수적이기 때문에, CD를 위해서는 CI가 선행되어야 한다.
CI = 빌드와 테스트의 자동화
CD = 배포의 자동화
Bitrise | Bitbucket pipeline | Github actions | Jenkins | FastLane | |
---|---|---|---|---|---|
가격 | 무료 / 월40$+ | 무료(50분)/3(3500분) + 추가 1000분당 10$ | public 저장소 무료 / private 저장소 유료 | 무료 | 무료...인듯? |
서버구축 | X | X | X | O | X |
장점 | 모바일 플랫폼에 특화됨 | BitBucket과 연동성 | 쉽다 | 사용자가 많아 참고할 레퍼런스가 많다. | iOS에서도 많이 사용하는 듯..? |
단점 | 가격 | 가격 | github 사용해야함 | 서버 구축이 필요함 | gui 미제공 |