Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- python
- Linux
- docker
- 사용자 계정 관리
- AWS
- 프로세스 관리
- Azure
- it기사
- 애저
- GIT
- OpenAI
- nexus
- 함수
- AI챗봇
- terraform
- open ai
- 파이썬
- jenkins
- 리눅스
- 클라우드
- awskrug
- AI
- 표준 라이브러리
- go
- dockerfile
- 3티어 아키텍처
- maven
- 변수
- aws사용자모임
- git hub
Archives
- Today
- Total
We are Architect
젠킨스로 배우는 CICD 파이프라인: 젠킨스 소개(2) 본문
* 젠킨스란?
- 젠킨스라는 이름은 충실한 하인 이라는 뜻으로 언제든지 시종 받고 일을 수행할 수 있게 준비된 사람이라는 뜻이다.
- 코드를 통합하고 테스트하고 빌드하고 서버에 배포까지의 프로세스를 도와주는 도구이다.
- CI/CD 프로세스를 자동화하여 생산성을 높여준다.
- 젠킨스는 오픈소스이며 무료이고 서버로 동작시켜야 한다.
- 젠킨스는 아파치 톰캣처럼 서블릿 컨테이너 내부에서 실행되는 서버 시스템이다. 자바로 만들어졌고 다양한 SW개발 도구를 지원한다.
- 아파치 톰캣 : Java 웹 애플리케이션을 실행하기 위한 서버 소프트웨어.
아파치 톰캣 로 - 서블릿 : Java로 작성된 웹 애플리케이션에서 HTTP 요청을 처리하고 응답을 생성하는 자바 클래스.
- 서블릿 컨테이너 : 서블릿과 JSP를 실행하고 관리하는 런타임 환경.
- 아파치 톰캣 : Java 웹 애플리케이션을 실행하기 위한 서버 소프트웨어.
- 애자일 방법론에 가장 적합하게 고객에 사항에 맞게 바로 반영하고 테스트하고 배포까지 해서 결과까지 도출하게 돕는 효율적인 도구 중 하나이다.
- 젠킨스는 상황에 따라 단위 테스트 도구로 실행해서 단위 테스트를 수행한다.
- 젠킨스는 다양한 플랫폼에서 애플리케이션을 빌드 할 수 있고 넥서스(중앙 집중식으로 산출물을 저장하는 저장소) 같은 아티팩트 리포지터리에 산출물을 발행하고 통합 절차도 자동화할 수 있다.
- 젠킨스는 단위 테스트, 테스트용 프레임 워크, 컨테이너 테스트 등 고품질 빌드를 생성한다.
* 젠킨스의 역사
- 젠킨스를 만든 사람은 코스케 카와구치라는 사람이다.
- 원래는 '허드슨' 이라는 이름으로 썬 마이크로시스템즈에서 만들어졌지만 오라클이 해당 회사를 인수하면서 따로 나온 프로젝트 이름이 '젠킨스'이다.
- 젠킨스의 커뮤니티와 생태계가 너무 커져서 현재 허드슨은 없어졌고 젠킨스만 남아 있다.
* 젠킨스를 이용한 CI/CD 구현
- 젠킨스 자동화 서버는 도메인 특화 언어(DSL)로 이러한 빌드 수명 주기 단계를 구축한다.
- DSL : DSL은 특정한 문제를 해결하거나 작업을 수행하기 위해 설계된 전문 도구 같은 언어.
- 젠킨스는 방대한 규모의 플러그인을 제공하고 있기 때문에 어떤 애플리케이션에 대해서도 E-E 빌드 수명 주기 단계를 구현할 수 있다.
- E-E 빌드 : End-to-End Build Lifecycle의 약자로 프로그램을 만들면서 빌드, 테스트, 배포하는 과정을 체계적으로 설명한다.
- 젠킨스은 파이프라인 이라는 스크립트를 작성할 수 있으며 이를 사용해 각 빌드 단계마다 젠킨스가 수행할 테스크 및 하위 테스크의 순서를 정의한다.
- 빌드 단계를 이전 단계의 결과가 다른 단계의 입력으로 주어지는 방식으로 순차적으로 이뤄진다.
- 만약 빌드 프로세스를 진행하는 중 특정 단계에서 실패가 발생하면 다음 단계가 실행되지 않고 빌드 프로세스 전체가 실패한다.
* 젠킨스의 아키텍처
- 일반적인 젠킨스의 CI/CD 프로세스는 다음과 같다.
- 다수의 개발자가 각자 브랜치에서 변경작업을 한 후 리포지터리에 psuh. 코드 리뷰한 후에 각자의 코드를 병합.
- 브랜치의 변경 사항이 젠킨스에 통보.
- 젠킨스가 통보를 수신하면 젠킨스 작업 시작.
- 젠킨스 작업이란 파이프라인 내에서 특정 작업이나 실행 단계를 정의한 구성 요소 작업.
- 소스 코드 관리 시스템에 맞는 플러그인을 사용해 리포지터리에서 변경된 값을 가져온다.
- 메이븐 같은 빌드 도구와 관련 젠킨스 플러그인을 사용해 변경된 파일을 컴파일한다.
- 빌드 도구를 재사용해 컴파일된 코드의 단위/통합 테스트를 실행한다.
- 정적 분석 도구를 실행해 코딩 표준을 준수하는지와 데드 코드가 있는지 확인한다. 정적 분석 도구로는 소나큐브 등을 사용한다.
- 컴파일과 테스트 완료된 파일들을 .jar 또는 .war 같은 라이브러리 형태로 번들링(파일을 묶는 것)한다. 이 과정도 젠킨스 플러그인으로 실행되는 빌드 도구를 사용한다.
- 빌드된 라이브러리 파일을 테스트/프로덕션 환경으로 배포한다.
- E-E 테스트 자동화 도구(셀레늄, 프르트랙터 등)를 사용해 배포된 애플리케이션을 대상으로 테스트를 실행한다.
- 셀레늄 : 브라우저 자동화 도구로, 주로 웹 애플리케이션을 테스트하기 위해 사용.
셀레늄 로고 - 프르트랙터 : 기타 웹 애플리케이션 테스트를 위한 자동화 도구.
- 셀레늄 : 브라우저 자동화 도구로, 주로 웹 애플리케이션을 테스트하기 위해 사용.
- 새로 생성된 애플리케이션의 상태와 E-E 테스트 결과가 포함된 이메일을 프로젝트 팀원들에게 전송한다.
- 젠킨스는 빌드과정에서 오류가 나면 해당 단계에서 실패를 하여서 여러 단계를 나눠서 부분마다 검증을 하고 빌드를 완료시킨다. 그리고 문제가 없을 경우에만 다음 빌드 단계로 넘어가고 테스트하여 프로젝트의 완성을 돕는다.
'CI & CD > Jenkins' 카테고리의 다른 글
젠킨스로 배우는 CICD 파이프라인: 젠킨스 플러그인 관리(6) (1) | 2024.12.24 |
---|---|
젠킨스로 배우는 CICD 파이프라인: 젠킨스 플러그인 관리(5) (1) | 2024.12.23 |
젠킨스로 배우는 CICD 파이프라인: 젠킨스 구성(4) (1) | 2024.12.21 |
젠킨스로 배우는 CICD 파이프라인: 젠킨스 설치(3) (0) | 2024.12.21 |
젠킨스로 배우는 CICD 파이프라인: CICD란?(1) (2) | 2024.12.20 |