Jenkins
: 소프트웨어의 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역의 저장소에
지속적으로 업로드하여 CI (지속적인 통합)이 가능하도록 하는 도구
: Git과 같은 버전관리 시스템과 연동하여 소스의 커밋을 감지하면 테스트가 포함된 빌드가 작동
ㆍ장점
: 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
: 자동화 테스트 수행: 정적 코드 분석에 의한 코딩 규약 준수 여부 체크
: 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
: 결함 테스트 환경에 대한 배포 작업
: 애플리케이션 서버로의 Deploy(배포) 등 간략화
ㆍ기능
: 각종 배치 작업의 간략화 (DB셋업, 환경설정, 배포, 라이브러리 릴리즈 등)
: 빌드 자동화
: 자동화 테스트 (코드 변경을 감지하고 자동화 테스트 수행)
: 코드 표준 준수 여부 검사
: 빌드 파이프라인 구성 (여러 모듈로 이루어진 프로젝트에 유용)
ㆍ젠킨스를 이용한 CI/CD 과정
1. 로컬에서 개발 후 깃허브로 커밋 및 푸시
2. 젠킨스가 이를 인지하여 빌드 및 테스트
3. 빌드가 성공할 경우 배포 서버로 전송
4. 빌드가 실패할 경우 로그를 남기고 알림
Jenkins 파이프라인
ㆍAgent Section
: 여러 slave를 두고 작업할 때 어떤 젠킨스가 어떤 일을 할지 정의
ㆍPost Section
: 각 스테이지가 끝난 후 후속 조치 설정
: ex) Success / failure / always / cleanup
ㆍStages Section
: 어떤 일들을 처리할 것인지에 대한 Stage정의
: 일종의 카테고리
ㆍDeclaratives
: Environ ment (파이프라인 및 stage scope의 환경변수 설정)
: Parameter (파이프라인 실행시에 받을 파라미터)
: Triggers (어떤 형태로 트리거 되는지 정의)
: When (언제 실행되는지 정의)
ㆍSteps
: 실행할 작업 정의
Jenkins의 플러그인
ㆍCredentials Plugin
: 각종 리소스에 접근하기 위한 토큰, 키 등을 저장하고 관리하기 위한 플러그인
ㆍGit
: git의 소스코드를 가져와 빌드하는 등 git과의 연동을 위한 플러그인
ㆍPipeline
: 젠킨스의 핵심 기능인 파이프라인을 관리하기 위한 플러그인
ㆍKubernetes
: 쿠버네티스 클러스터에서 동적인 에이전트 실행
: Docker 이미지로 정의된 각 에이전트에 대한 pods를 작성하여 빌드 후 실행 후 종료
ㆍAWS CodeDeploy
: 젠킨스 프로젝트의 빌드 후 AWS 인스턴스로의 애플리케이션 배포
: zip 파일을 Amazon 인스턴스 집합으로 roll-out 하여 배포
ㆍBlue Ocean
: 젠킨스 파이프라인을 가시성 좋게 변환하여 표시
ㆍMaven Integration
: Maven을 이용하여 프로젝트를 빌드하고 JAR 또는 WAR 빌드 아티팩트 생성
: Apache Maven을 사용하는 프로젝트에서 활용
ㆍJIRA Plugin
: 이슈 추적 도구인 JIRA와 Jenkins를 연동하는 플러그인
: JIRA REST API를 이용하여 젠킨스 빌드 페이지에 대한 백 포인터 역할
ㆍBuild Pipeline
: 업스트림 및 다운스트림 연결 작업을 미리보기로 시각화 하고 처음부터 끝까지 빌드 프로세스에 대한 개요 제공
: 작업에 수동 트리거를 추가하여 배포 전 검토와 같은 외부 프로세스를 파이프라인에 맞추기 가능
ㆍThinBackup
: 빌드 기록으로 작업의 백업 및 구성 관리
: 자동 백업 기능을 통해 프로젝트를 쉽게 관리
ㆍDocker Build Step
: 동적인 프로비저닝을 위한 플러그인
: 다양한 도커 명령을 빌드 단계에서 사용
: 이미지에서 컨테이너 생성 / 컨테이너 시작 및 중지 등
=> 이외 Docker / Docker Pipeline 등이 있음
ㆍJenkins Disk-usage
: 디스크 사용량 분석 플러그인
: 젠킨스 프로젝트의 디스크 사용량을 분석하여 알리고 예상치 못한 디스크 사용을 예방
ㆍAmazon EC2
: EC2 인스턴스와 젠킨스의 연동을 위한 플러그인
: ssh를 통한 publish를 하지 않아도 됨
※ Pipeline
: CI/CD 파이프라인을 젠킨스에 구현하기 위한 플러그인 들의 구성
: 여러 플러그인들을 파이프라인에서 용도에 맞게 사용하고 정의하여 서비스 배포
: Pipeline DSL(Domain Specific Language)로 작성
Refference
'CICD > Jenkins' 카테고리의 다른 글
젠킨스의 주요 기능 (0) | 2021.10.01 |
---|---|
깃허브 웹훅 도입 및 젠킨스 연동 (GitHub Webhook with Jenkins) (0) | 2021.09.30 |
젠킨스 The Gradle wrapper has not been found in these directories 오류 해결 (0) | 2021.09.30 |
github와 jenkins 연동하기 (0) | 2021.09.30 |
CentOS 7 젠킨스 설치 (0) | 2021.09.28 |