자동화가 없으면 뭐든 절대 돌아갈 수 없는 요즘 시대에 복잡한 build, test, 배포 과정 역시 자동화할 수 있는 것이였다!
build, test, 배포 과정을 자동화하는 CI/CD에 대해 살펴보자!
CI는 빌드/테스트 자동화 과정이다.
CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다.
CI를 성공적으로 구현한다면 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 repository에 통합되므로 여러 명의 개발자가 동시에 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
지속적 통합(CI)의 실행은 소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 commit하여 모든 사람에게 동일 작업 기반을 제공하는 것으로 시작한다.
commit 할 때 build, test가 자동으로 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장해준다.
CD는 배포 자동화 과정이다.
지속적인 서비스 제공 또는 지속적인 배포를 의미하며, 지속적인 서비스 제공은 코드 변경이 파이프라인의 이전 단계를 모두 성공적으로 통과할 경우 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포된다.
또한 지속적인 배포는 간단한 코드 변경이 정기적으로 마스터에 commit되고, 자동화된 빌드 및 테스트 프로세스를 거치며 다양한 사전 프로덕션 환경으로 승격되며 문제가 발견되지 않으면 최종적으로 배포된다.
1) 개발자들이 개발 후 코드 수정
2) 개발자 각자의 feature branch에 코드를 push
3) 각자의 코드를 git에 올리고 Intergration
4) 에러 발생으로 인해 디버깅, 코드 수정
5) 1~4 과정 반복
6) 에러 해결 후 배포 시작 (배포 역시 개발자가 진행)
1) 개발자들이 개발 후 feature branch에 코드 Push
2) git push를 통해 Trigger되어 CI 서버에서 Build, Test, Lint 실행, 결과 전송
3) 결과를 받은 개발자들은 에러가 난 부분을 확인하여 수정하고 수정 코드를 master branch에 merge
4) master branch에 코드를 merge하고 build, test가 정상적으로 수행된 경우 CI 서버에서 알아서 Deploy