CI/CD란 Continuous Integration/Delivery & Deployment의 약자로,
개발자가 코드를 다 짰다면 그 코드를 합치고 배포하는 것을 CI/CD라고 합니다.
개인이 아닌 많은 개발자가 한 프로젝트에서 시스템이나 규율 없이 코드를 합치고 배포를 한다면
테스트 되지않는 코드를 배포해서 에러가 뜬다거나 서로의 코드에 영향을 끼친다거나
많은 문제가 발생되겠죠?
이를 방지하기 위해 CI/CD의 개념이 생기게 되었고 이를 쉽게 해주는 툴이 생기게 되었습니다.
코드구축부터 배포까지의 모든 과정을 CI/CD 파이프라인이라고 합니다.
총 3가지 단계로 구성되는데요
continuous integaration -> continuous delivery -> continuous deployment
continuous integration : 코드를 빌드하고 테스트를 마친 후 합칩니다.
continuous delivery : 해당 레퍼지토리에 릴리스합니다.
continuous deployment : 실제 서비스에 배포합니다.
파이프라인의 장점은 코드배포까지 체계적인 시스템을 갖춘다는 것과 테스트가 강제되는 점이라고 할 수 있습니다
소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말합니다.
예를 들어 Java프로젝트를 진행한다면 개발자가 작성한 A.java와 여러가지 정적 파일등에 해당하는 resource가 존재합니다.
빌드를 한다면 소스코드를 컴파일해서 .class로 변환하고 resource를 .class에서 참조할 수 있는 적절한 위치로 옮기고 META-INF와 MANIFEST.MF 들을 하나로 압축하는 과정을 의미합니다.
컴파일은 빌드의 부분집합이라고 생각하시면 됩니다.
또한, 빌드 과정을 도와주는 도구를 Build Tool이라고 합니다.
대표적인 예로 webpack이 있습니다.
https://webpack.js.org/
테스트는 함수같은 작은 단위들을 테스트 하는 단위테스트, 모듈을 통합할 때 하는 통합테스트, 사용자입장에서 서비스를 사용한다고 생각하고 하는 엔드투엔드테스트가 있습니다.
테스트를 위한 대표적인 프레임워크로는 mocha가 있습니다.
배포는 사용자가 사용하기 위한 서비스 배포 뿐만 아니라 관리자페이지,백엔드 개발자를 위한 페이지등 모든 배포를 포함합니다.