소프트웨어 빌드란?
- 자신(혹은 팀)이 개발한 소프트웨어를 최종적으로 출시하기 위한 형태로 만드는 것
- 참여 개발자들이 많을수록 이는 더 중요
- 개발이 끝나기 전부터 빌드를 하면 소프트웨어의 안정성 증대
개발자가 코드를 고칠 때마다 테스트를 돌림으로써 우리가 기대하는대로 코드가 동작하고있음을 보장하고자함.
Continuous Integration이란?
Software Engineering Practice의 하나
기본 원칙
- 코드 Repo는 하나만 유지 (Master)
- 코드변경을 최대한 자주 반영, 한번에 모두다 끝내려하지말고, 자주 sync, 자주 조금씩
- 테스트를 최대한 추가
- Test Coverage(최소 75%~80%)
- 빌드를 계속적으로 수행 (자동화)
- Commit Build vs Nightly Build
- 성공한 빌드의 프로덕션 릴리스 (자동화)
CI(자동테스트) -> CD(자동배포)
빌드 실패
- 새 코드의 커밋으로 인해 테스트가 실패하는 경우
- 많은 회사들이 빌드 실패시 빌드가 다시 성공할 때 까지 코드 변경을 금지
- 즉 빌드 실패는 모든 사람들을 잡아두는 족쇄
- 그래서 어느 정도 조직이 커지면 빌드만 전담하는 엔지니어가 생김
- 이 사람의 업무 중의 하나는 빌드 실패시 누가 주범인지 알아내는 것
- 빌드 실패시 가벼운 형태로 페널티 부여
CI/CD란
Code Commit -> CI(테스트 수행) -> CD(소프트웨어 배포) -> production