“Jenkins”
모든 언어의 조합과 소스 코드 레포지토리에 대한 지속적인 통합(Continuous integration, CI)과 지속적 배포 (Continuous delivery, CD) 환경을 구축하기 위한 도구이다.
빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있다.
[개 요] ✅ 종 류 : 개념정의 ✅ 난이도 : ⭐ ✅ 내용요약 : Jenkins 란 ✅ 테스트환경 : ✅ 관련직무 : 시스템&클라우드 엔지니어 |
1. Jenkins
1️⃣ Jenkins 기본 개념
ㆍJava Runtime Environment에서 동작
ㆍ다양한 플러그인들을 활용해서 각종 자동화 작업을 처리할 수 있다.
ㆍAWS 배포, 테스트, 도커 빌드 등 할게 너무 많으니 각각의 컴포넌트들을 하나의 플러그인으로 모듈화를 해놓았는데 이를 활용하여 사용하면 된다.
ㆍ가장 핵심적인 파이프라인, 시크릿 키마저도 플러그인으로 동작시킬 수 있다.
ㆍ일련의 자동화 작업의 순서들의 집합인 Pipeline을 통해 CI/CD pipeline을 구축한다.
ㆍ플러그인들을 잘 조합해서 돌아가게 하는게 Pipeline이라고 할 수 있다.
2️⃣ Jenkins 대표 Plugins
ㆍCredentials Plugin
└ Jenkins는 그냥 단지 서버이기 때문에 배포에 필요한 각종 리소스에 접근하기 위해서는 여러 가지 중요 정보들을 저장하고 있어야 한다.
└ 리소스에는 클라우드 리소스 혹은 베어메탈에 대한 ssh 접근 등을 의미한다.
ㆍGit Plugin => Jenkins에서 git에 대한 소스코드를 긁어와서 빌드할 수 있도록 도와줌
ㆍPipeline => 핵심 기능인 파이프라인마저도 플러그인이다.
ㆍDocker plugin and Docker Pipeline => Docker agent를 사용하고 Jenkins에서 도커를 사용하기 위한 플러그인
3️⃣ Jenkins 의 이점
1. 편리한 설정
웹 기반의 콘솔로 다양한 인증 기반과 결합이 가능하며 권한 관리 기능을 통해 안전한 빌드/배포 환경을 구축할 수 있다. 수많은 플러그인을 사용하여 자동화 할 수 있어 반복되는 작업을 줄일 수 있다. 빌드/배포의 결과에 대해 통지 받을 수 있는 설정이 간편하고 다양한 채널을 통해 빠르게 피드백을 받을 수 있다.
2. 안정적인 빌드/배포 환경
소스 버전 관리 툴과 연동하여 코드 변경을 감지하고, 자동화 테스트를 포함한 빌드를 수행하여 소프트웨어 품질을 향상시킬 수 있다. 자동화 테스트에는 코딩 표준 준수 여부 체크, 유닛 테스트, 통합 테스트 등을 설정할 수 있고 테스트 결과에 대한 피드백을 받아 잠재적인 오류를 사전에 예방할 수 있다. 빌드 결과물을 지속적으로 배포하도록 설정하여 개발 프로세스 전체를 자동화할 수 있다.
3. 다양한 활용 및 손쉬운 확장
Jenkins는 많이 사용되고 있는 오픈 소스 소프트웨어로 문서화가 잘 되어 있다. 빌드/배포 이외에도 스케쥴링을 이용한 배치 작업에도 활용되는 등 다양한 적용 사례들을 참고할 수 있다. 플러그인을 직접 개발하여 기능을 확장하는 것도 가능하다.