jenkins를 설명하면 가장 먼저 나오는 단어는 CI/CD입니다.
예를 들어 5명의 개발자가 참여하는 프로젝트가 있다고 가정해봅니다. git에 올라와있는 기본 틀이 잡혀있는 코드를 이용해 각자의 로컬 환경에서 작업을 시작합니다. 개발자들은 자신의 작업을 할뿐 한번도 중장저장소에 코드를 올리지 않고 개발이 끝났을때 5명의 개발자들이 모여 자신들이 개발한 코드를 통합하려면 어떤 일이 발생할까요?
이를 해결하는 방안으로 다음의 규칙은 어떨까요?
프로젝트 시작부터 끝까지 이런 규칙들을 지키면 막판에 코드 통합문제는 크게 발생하지 않을것 같습니다.
하지만 이러한 방법들은 너무나도 귀찮다는 문제가 발생합니다.
git에 코드를 올리는것은 그렇다쳐도 코드 양이 많아질수록 테스트하는 시간도 길어지고 지루한 작업입니다. 그렇다면 git에 코드만 올리면 알아서 테스트, 빌드를 수행하고 결과값을 도출하는 프로그램이 있으면 좋지 않을까요? 여기서 자동화가 나옵니다.
쉽게 생각하면 CD는 CI의 연장선입니다. 배포 이전 테스트와 빌드는 필수이기 때문에 CD가 되려면 CI가 선행되어야 합니다.
CI를 통해 개발중에 지속적으로 빌드오 테스트를 진행하고 이를 통과한 코드에 대해 테스트 서버와 운영 서버에 그 내용 곧바로 배보해 반영하는 것입니다. 지속적으로 테스트와 빌드가 이루어지면 배포 또한 지속적으로 이루어지게 됩니다.
jenkins는 소프트웨어 개발시 지속적으로 통합 서비스를 제공하는 툴입니다. CI 툴이라고도 합니다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해줍니다.