CI/CD, Jenkins란?

Programmingzi·2024년 6월 2일

CI/CD란?

CI/CD란 지속적인 통합과 지속적인 배포라는 의미로, 보통 "자동화"의 의미를 내포하고 있다.
CI/CD를 통해 개발부터 배포까지의 단계를 자동화를 통해 효율적이고 빠르게 수행할 수 있다.

CI(Continuous Integration)

지속적인 통합이라는 의미로, 애플리케이션의 코드를 수정할 때마다 지속적으로 merge하는 것을 의미한다.

하나의 예시를 통해 살펴보자. 개발자들이 하나의 프로젝트를 진행하고 있으며, 형상관리 툴(git, svn) 등을 사용하고 있다.

이때, 코드를 수정하고 빈번하게 merge하지 않고 한꺼번에 많은 코드를 merge하게 된다면 많은 충돌이 발생할 것이다. 또한, 충돌한 코드를 수정하는데 많은 시간이 소요될 것이다.

따라서, 가능한 작은 단위로 나누어서 주기적으로 개발하고 지속적으로 통합하여 나가는 것이 중요하다.

하지만, 이때 통합하는 과정이 번거롭다는 단점이 존재한다.

코드를 통합하고 빌드해서 테스트하는 과정을 반영할 때마다 수행해줘야 하기 때문이다.

그래서 이러한 과정을 자동화한다면, 개발자는 훨씬 편하게 작업할 수 있을 것이다.

코드를 형상관리 툴에 반영하기만 하면, 나머지 빌드 및 테스트는 자동으로 진행된다.

자동화된 CI의 장점으로는,

  • 코드 검증에 소요되는 시간 절약
  • 개발 편의성 증가

CD(Continuous Deployment)

지속적인 배포라는 의미로, 배포할 준비가 끝나면 자동화를 통해 배포를 진행하는 것을 의미한다.

CI를 적용하여 코드를 검증한 후, 실제 프로덕션 환경에 배포한다.

CI/CD의 대표적인 툴로 젠킨스가 있다.

Jenkins

소프트웨어 개발 시 CI/CD 환경을 제공하는 도구이다. 빌드 및 테스트, 배포 프로세스를 자동화하여 시간 절약 및 개발 생산성을 높일 수 있다.
svn과 git 등의 형상관리 툴과 연동하여 커밋을 감지하면 빌드되도록 설정할 수 있다.



참고
https://jud00.tistory.com/entry/CICD%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

0개의 댓글