CI/CD? Jenkins(젠킨스)?

임철종·2023년 2월 28일
0
post-thumbnail

Jenkins(젠킨스)

Jenkins는 소프트웨어 구축, 테스트, 제공 또는 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용할 수 있는 독립현 오픈 소스 자동화 서버이다.

Jenkins는 기본 시스템 패키지, 도커를 통해 설치하거나 JRE(Java Runtime Environment)가 설치된 시스템에서 독립 실행형으로 실행할 수 있다.

특징

편리한 설정

  • 웹 기반의 콘솔로 다양한 인증 기반과 결합이 가능하며 권한 관리 기능을 통해 안전한 CI/CD 환경을 구축할 수 있다.
  • 수많은 플러그인을 사용하여 자동화 할 수 있기 때문에 개발 생산성을 높일 수 있다.
  • 빌드/배포 결과를 통지받을 수 있는 설정이 간단하고 다양한 채널을 통해 빠른 피드백을 받을 수 있다.

안정적인 빌드/배포 환경

  • 소스 버전 관리 툴과 연동하여 코드 변경을 감지하고 자동화 테스트를 포함한 빌드를 수행하여 소프트웨어 품질을 향상시킬 수 있다.
  • 자동화 테스트에는 코딩 표준 준수 여부 체크, 유닛 테스트, 통합 테스트 등을 설정할 수 있고 테스트 결과에 대한 피드백을 받아 잠재적인 오류를 사전에 예방할 수 있다.
  • 빌드 결과물을 지속적으로 배포하도록 설정하여 개발 프로세스를 자동화할 수 있다.

다양한 활용 및 손쉬운 확장

  • Jenkins는 많이 사용되고있는 오픈 소스 소프트웨어로 문서화가 잘 되어있다.
  • 빌드/배포 이외에도 스케쥴링을 이용한 배치 작업에도 활용하는 등 다양한 적용 사례가 있다.
  • 플러그인을 직접 개발하여 기능을 확장할 수도 있다.

기능

Jenkins와 같은 CI 툴이 나오기 전에는 일정 시간마다 빌드를 실행하는 것이 일반적이었는데, Jenkins는 Git과 같은 버전 관리 시스템과 연동하여 소스의 커밋을 감지하면 자동으로 빌드가 작동하여 개발 편의성이 증가되었다.

이러한 기능을 수행하는 Jenkins는 컴파일 오류를 검출하고 자동화 테스트를 수행하며 정적 코드 분석으로 인한 코딩 규약 준수 여부를 체크하고 프로파일링 툴을 이용한 성능 변화 감시, 결합 테스트 환경에 대한 배포 작업에 큰 도움을 준다.

프로젝트 기간 중에 개발자들은 순수한 개발 작업 이외의 DB 설정, 환경 설정, 배포 작업과 같은 단순 작업에 시간과 노력을 들이는데, 이러한 작업을 Jenkins로 쉽게 수행할 수 있게 된다.

Jenkins는 온갖 종류의 개발 작업을 지원하기 위한 오픈 소스 자동화 서버이다.
1400가지가 넘는 플랫폼, UI, 관리, 소스코드 관리, 빌드 관리의 플러그인을 가지고 있다.

Jenkins는 개인이 확인하지 못한 코드 표준 준수 여부의 검사나 정적 분석을 통한 코드 품질 검사를 빌드 내부에서 수행한다. 또한 2개 이상의 모듈로 구성되는 레이어드 아키텍처가 적용된 프로젝트에는 그에 따른 빌드 파이프라인 구성이 필요하게 된다. 예를 들어, 도메인->서비스->UI 와 같이 각 레이어 참조 관계에 따라 순차적으로 빌드를 진행해야 하는 경우 Jenkins는 이러한 빌드 파이프라인을 스크립트로 작성하여 제어할 수 있다.

참조

profile
🌑🌘🌗🌖🌕

0개의 댓글