용어로서의 지속적인 통합은 두 가지 별개의 아이디어를 의미합니다.
첫 번째는 워크 플로입니다. 팀의 모든 직원이 자체 지사에서 일한 후 몇 주 동안 프로그래밍 한 후 변경 사항을 기본으로 병합하려고하면 변경 사항이 거의 (가) 지속적으로 통합됩니다. 이로 인해 문제가 조기에 발생하고 호환되지 않는 변경이 방지됩니다. 그러나 변경 사항이 "작동"하는지 쉽게 확인할 수 있어야합니다.
이것은 두 번째 아이디어가 나오는 곳으로 훨씬 인기가 있습니다. CI 서버는 변경 사항을 가능한 빨리 테스트하는 깨끗한 환경입니다. 빌드를 재현 할 수 있도록 깨끗한 환경이 필요합니다. 한 번 작동하면 항상 작동합니다. 이렇게하면 "하지만 컴퓨터에서 작동했습니다"문제를 피할 수 있습니다. 특히, CI 서버는 소프트웨어가 다른 시스템이나 다른 구성에서 실행될 때 모든 것이 작동하는지 확인해야합니다.
빌드 단계의 부족은 관련이 없습니다. 그러나 CI는 테스트 스위트가있는 경우에만 의미가 있습니다. 이 테스트 스위트는 자동이어야하며 실패가 없어야합니다. 테스트가 실패하면 적절한 개발자가 자신이 도입 한 문제를 해결할 수 있도록 알림을 받아야합니다 (컴파일로 빌드가없는 경우에도 "빌드 중단").
그러한 서버는 단순한 테스트 이상의 가치가 있다는 것이 밝혀졌습니다. 실제로, 대부분의 CI 소프트웨어는 다양한 구성으로 테스트를 실행하는 데는 열중하지만 모든 종류의 작업을 관리하는 데는 능숙합니다. 예를 들어 "연속적인"단위 테스트 외에도 야간 빌드로 전체 테스트를 수행 할 수 있습니다. 소프트웨어는 여러 Python 버전, 다른 라이브러리 버전으로 테스트 할 수 있습니다. 웹 사이트에서 사용 불능 링크가 있는지 테스트 할 수 있습니다. 코드를 통해 정적 분석, 스타일 검사기, 테스트 범위 도구 등을 실행할 수 있습니다. 문서를 생성 할 수 있습니다. 모든 테스트 스위트가 통과하면 패키징 프로세스가 시작되어 소프트웨어를 릴리스 할 수 있습니다. 이는 항상 배포 가능하고 데모 가능한 제품을 원하는 민첩한 설정에 유용합니다. 웹 앱의 등장으로 지속적인 배포 라는 아이디어도 있습니다: 모든 테스트를 통과하면 변경 사항을 프로덕션으로 자동 푸시 할 수 있습니다. 물론이를 위해서는 테스트 스위트에 대한 확신이 있어야합니다 (그렇지 않은 경우 더 큰 문제가 있음).