이 글은 프로젝트를 진행하기 전에 필요한 사전 지식을 정리하기 위해 쓴 글입니다.
Jenkins란?
Jenkins는 소프트웨어 구축, 테스트, 전달 및 배포와 관련된 모든 종류의 작업을 자동화하는데 사용할 수 있는 오픈 소스 자동화 서버이다.
Jenkins는 시스템 패키지, Docker 또는 JRE(Java Runtime Environment)가 설치된 모든 환경에서 실행할 수 있다.
이러한 자동화 시스템은 다양한 플러그인들을 조합하여 일을 처리하는 Pipeline을 통해 CI/CD Pipeline을 구축할 수 있다.
Pipeline이란?
프로세서에서 성능을 높이기 위해서 명령어 처리 과정으로 명령어 처리를 여러 단계로 나누어 단계별로 동시에 수행하여 병렬화 시키는 것을 말한다.
Jenkins에서 Pipeline은 생성되어있는 Jenkins Job들을 순차적, 혹은 병렬적으로 실행시키거나 특별하게 작성한 스크립트로 이벤트들을 연속적으로 실행시키는 등을 지원하는 기능이다.
즉, 일일이 수동적으로 Job을 진행하는 것이 아닌 Pipeline에 의하여 순차적, 병렬적으로 Job을 자동으로 실행한다.
Jenkins의 장점
1. 프로젝트의 빌드가 정삭적으로 되고 있는지 체크할 때
2. 자동으로 유닛 테스트(Unit Test)와 통합 테스트(Integration Test)의 정기적인 실행과 결과에 문제가 있을 경우에 이메일 또는 SonarQube와 같은 도구를 통해 결과확인 가능
3. 코드의 질 향상(테스트 하는 시간 및 버그 조기 발견의 가능성으로 시간 절약)
정리
소프트웨어 구축, 테스트, 전달 및 배포의 작업을 자동화하여 수행할 수 있음.
업무를 정해진 pipeline에 의하여 자동적으로 실행시킬 수 있음.
팀에 A라는 개발자가 작성하여 통합한 코드를 B라는 개발자가 따로 테스트를 실행하여 빌드를 확인할 필요가 없어짐.
Jenkins가 정기적으로 테스트를 실행하고 지속적으로 배포하므로 조기에 버그를 발견할 수 있음.
+ CI와 CD
CI는 전체 프로그램을 컴파일하고 테스트한다. 코드 레벨의 테스트까지 자동화한다.
CD는 코드레벨 테스트 뿐만 아니라 시스템 테스트 및 배포 등 실행 환경과 릴리즈까지 자동화하는 것이 CD이다.
CI/CD를 통해 짧은 사이클로 통합을 반복하면서 통합 시 발생된 오류를 신속하게 수정하여 개발팀은 통합된 소프트웨어를보다 신속하게 개발할 수 있게 된다.
'Infra' 카테고리의 다른 글
Keda (0) | 2024.04.29 |
---|---|
Docker / Kubernetes (0) | 2022.05.24 |
Jenkins VS Travis VS Github action (0) | 2022.03.21 |
클라우드, 인프라 (0) | 2021.11.01 |