320x100
320x100

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

 

[Jenkins] 젠킨스란 무엇인가

What is jenkins? 젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. CI(Continuous Integration) 툴 이라고 표현한다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을

ict-nroo.tistory.com

 

CI/CD, Jenkins 란 무엇일까

CI : 여러 개발자들의 코드를 계속해서 통합하는 것.CD : 개발자들이 코드를 계속 작성하면, 사용자 및 내부 사용자들(즉, QA 등등)이 계속 쓸 수 있게 만드는 것지속적으로 배포가능한 상태를 유지

velog.io

 

CICD - 로컬 PC에 CICD환경 구축하기 (Jenkins, Ngrok, docker)

jenkins 원격배포 로컬 환경에 자동배포 서버 구축하기 회사에서 서버를 구축하며, 자동배포 환경을 여러번 구축했었으나, 자세히 공부를 하지 않았던 탓에, 번번히 잊혀져만 갔습니

galid1.tistory.com

 

젠킨스 유용한 플러그인

젠킨스는 전세계적으로 쓰이는 오픈소스 CI(Continuous Integration) 툴이다. 젠킨스는 robust 한 오픈소스 커뮤티에서 개발한 여러 플러그인이 존재하는데 이런 플러그 인들은 젠킨스에 여러 유용한 기

haningya.tistory.com

 

Jenkins : Jenkens를 활용한 실무 강좌 정리 (1강) - CI/CD, Jenkins Pipeline 등

SKplanet Tacademy 유튜브 채널에서 토크온 세미나로 Jenkins에 대한 내용을 설명해서 쭉 정주행을 해보았다. 평소 CI/CD에 대해서 많이 들어봤지만 무엇인지 제대로 알지 못하고, 개념이 잡혀있지 않아

jw910911.tistory.com

 

300x250
728x90