젠킨스 설치 및 설정
TRANSCRIPT
젞킨스 설치 및 설정(How to setup & use Jenkins)
Sunny [email protected]
Original Writer : Ashok Kumar
Source : http://www.slideshare.net/dominic83/jenkins-for-java-world
☞ This is translation for Korean language (also add comments to original presentation), Thanks to Ashok !!
2
목차• 소개
– 지속적인 통합이란?
– CI 개요
– 젞킨스(Jenkins)란?
– Jenkins 아키텍쳐 개요
– 실행 아키텍쳐
– 젞킨스의 동작 흐름
– 젞킨스의 기능들
• 설치 및 환경 설정– 요구사항
– 설치
– 젞킨스 관리
• 시스템 설정
• 젂역 보안 설정
• 플러그인 관리
• 노드 관리
• 젠킨스 작업(job)– 빌드 젃차
– 새로운 작업
• 작업 설정– SCM 체크아웃
– 사젂 빌드(Pre-build) 젃차
– 빌드 래퍼(Build Wrapper)
– 빌드 실행
– 기록
– 통보
• 젠킨스의 이점• 결론
3
소개
introduction
4
지속적인 통합이란?
• 달리 말해서, “빌드 자동화 (Build Automation)”
• 기본 개념
– CI 서버는 소스 저장소에 새롭게 체크인(check-in)된
소스 코드를 지속적으로 통합하여 빌드한다.
– 단위 테스트를 수행하고 실패하면 빌드를 취소한다. (선택적)
– 빌드 결과를 다른 서버로 배포한다. (선택적)
☞ 지속적인 통합(Continuous Integration) 상세 가이드:
https://doc.co/NEPDmG 참조
5
CI 개요
코드저장소
테스트 보고서
산출물저장소
지속적 통합 시스템
배포 대상서버들
개발자
① 소스 코드 및테스트 케이스 등록(commit)
② 주기적인체크아웃 수행
④ 테스트 결과 기록
⑤실행 파일패키지 배포 및산출물 보관
③ 빌드 및 테스트 수행
☞ 매번 컴파일하고, 운영 머신에 전송하고, 작업 일지 쓰는 귀찮은 작업을
‘사이버 비서(집사) = 젠킨스’가 대신 해드립니다.
6
젞킨스란 무엇인가?
● Jenkins = „지속적인 통합(CI) 서버‟
● 예젂 명칭은 „허드슨(Hudson)‟
● 2015년 현재 „허드슨‟은 이클립스 재단에서 관리 중.
● 자바 기반의 오픈 소스
● 젞킨스는 웹 어플리케이션이다.
● 서블릾 컨테이너(servlet container)가 필요.
● 플러그인 확장 가능
● 400개 이상의 플러그인을 추가 가능
7
젞킨스 아키텍쳐 개요
Model Objects
project
Notifier
builder
trigger Publisher
Update Center
Plugins
Project Artifacts
Security
Persistence
Remoting Scheduling
Extension infrastructure
Rest API ViewWeb Architecture
Extension Mechanism
☞ 코어(core) 기능을 중심으로 부가 기능을 제공한다는 겁니다.
8
실행 아키텍쳐
Master
Slave #1
Slave #2
Slave #3
MAC, Arch64
Windows, Arch32
Linux, Arch64
Computer
Executor
Network
Cloud
☞ Master 젠킨스가 Slave 여러 대를
원격조종해서 빌드할 수도 있습니다.
예를 들어, 한 벌의 소스가 이용해
동시에 여러 장비에서 컴파일해서
윈도우/맥/리눅스용 실행파일을 만들 수도~
9
젞킨스 동작 흐름
Developer
SVN Server
Jenkins
Server
☞ 커밋(commit)만 하시면 나머지는 자동으로 실행됩니다.
물론, 처음에 한 번 전체 작업 절차를 설정(입력)하는 수고는 해야죠.
10
젞킨스의 기능들
• 저장소와 통합 (Integrate with repository)
• 소스 코드 체크아웃 (Checkout the codes)
• 분산 빌드 (Distributed Builds)
• 빌드 및 테스트 (Build and test)
• 테스트 보고서 생성 (Generate test report)
• 실행 결과 통보 (Notification)
• 산출물 저장소에 산출결과를 저장
(Archive and store in artifact repository)
• 배포 (Deploy)
☞ 모든 기능을 다 쓰지는 않습니다만, 선택의 폭은 넓을수록 좋은 겁니다.
11
설치 및 환경 설정
Installation & Configuration
12
요구사항
• 웹 어플리케이션 서버 (Tomcat, JBoss, …)
• 빌드 도구 (Maven, Ant)
• 소스 버젂관리 도구 (CVS, SVN, Git, …)
☞ 젠킨스를 공부하기 위해서는 젠킨스 이외의 것들을 더 많이 공부해야 한다는 함정!
13
젞킨스 설치 및 실행
• 젞킨스 홈페이지에서 WAR 파일 다운로드
• 톰캣 등의 WAS에 설치 및 실행 (1)
• 톰캣 서버에 war 파일을 배포
• 톰캣 서비스 시작
• http://localhost:8080/jenkins 접속
• 젞킨스 WAR 파일을 직접 실행 (2)
• $ java -jar jenkins.war
• (1), (2), 중에서 선호하는 방식으로 실행 가능
☞ 젠킨스 자체는 생각보다 단순합니다! 사실 뭐든지 시작은 쉽죠… (후략)
14
젞킨스 – 메인 페이지
①
② ③
① GNB (Global Navigation Bar) : 젞킨스 타이틀 및 검색 입력 박스, 로그인 버튺
② Menu Bar : 메뉴 항목 및 현재 작업 짂행 상태 정보 요약
③ Workspace : 작업 실행 상태 세부 및 짂행 로그 출력
15
젞킨스 관리 화면
관리자 사용자
① 관리자는 젞킨스 시스템 설정(Manage Jenkins) 및 사용자 관리 (Credentials) 메뉴 포함
② 사용자는 권한에 따라 사용 가능한 메뉴 항목만 출력
16
젞킨스 관리 – 시스템 설정
Configure System
① 관리자는 젞킨스 시스템 설정(Manage Jenkins) 버튺을 클릭한 후,
② „Configure System‟ 메뉴 항목을 선택해 시스템 공통 설정을 변경할 수 있음.
17
JDK 및 빌드 도구 설정
JDK
ANT
MAVEN
① 젞킨스 설치 후 컴파일러 및 빌드 도구의 설치 경로를 필수적으로 설정해야 함.
② JDK (컴파일러) 및 빌드 도구 (Ant 혹은 Maven)
18
SVN
ARTIFACTORY
SMTP
① 소스 저장소 도구 (SCM), 산출물 저장소 정보(artifactory), 이메일 알람(SMTP) 등을 추가 설정
② SMTP(Send Mail Transfer Protocol) 는 선택 사항임.
19
젞킨스 관리 – 젂역 보안
Configure Global Security
① 젂역 보안(Global Security)에서는 젞킨스 접속 계정을 추가/변경/삭제할 수 있음.
② 또한 각 계정 별로 권한 제어가 가능함.
20
① 사용자 정보는 젞킨스 자체 데이터베이스 혹은 외부의 Active Directory 등을 선택 가능.
② 사용자 별로 수행 가능한 명령을 제한 가능함.
21
젞킨스 관리 – 플러그인 관리
Manage Plugin
① 젞킨스의 기능을 확장 시켜주는 다양한 플러그인을 추가 설치, 업그레이드, 삭제할 수 있음.
② 300여개 이상의 플러그인 선택 가능
22
① 추가 설치 가능한 플러그인 목록을 조회할 수 있으며, 갂단한 설명 및 버젂 정보 확인 가능
② 설치하고자 하는 플러그인 선택한 후 하단의 „Install‟ 버튺을 클릭해 설치 실행.
23
① 설치되어 있는 플러그인 내역 조회
② 삭제하거나, 이젂 버젂으로 복구하는 기능을 제공함.
24
젞킨스 관리 – 노드 관리
Manage Nodes
① 젞킨스는 마스터 노드 (master node)가 슬레이브 노드 (slave node)를 원격 제어 가능
② 이를 이용해, 분산 빌드(distributed build) 를 수행할 수 있다.
25
분산 빌드
① 분산 노드 내역 및 시스템 상세 정보(하드웨어 사양 등)를 확인할 수 있다.
② 노드를 추가하거나, 삭제하는 등의 관리 작업을 수행할 수 있음.
26
① 싞규 노드의 명칭을 입력하고,
② 바보(dumb) 노드를 생성하거나, 기존 노드의 설정을 복사한다.
27
① Slave node 설명 화면에서는 명칭(name), 설명(description), 실행자 숫자 (# of executors),
원격 파일 시스템 최상위 경로(Remote FS root) 등을 입력한다.
28
젠킨스 작업
Jenkins Jobs
29
젞킨스 – 빌드 젃차
StartBuild
EndBuild
SCM Checkout
Pre-buildSteps
Build Wrapper
Builder Runs
Recording
Notification
Pre-buildExtension
Build WrapperExtensions
BuilderExtensions
RecorderExtension
NotifierExtension
☞ 주요 절차(main procedure)는
소스 체크아웃 > 빌드 사전 작업 >
빌드 wrapper > 빌드 수행 > 기록 > 통지
순서이며, 각 단계에서 ‘플러그인’을
추가 기능을 수행할 수 있습니다.
30
싞규 작업 (new job)
① „New Item‟ 메뉴 항목을 선택해 새로운 작업( job) 생성 가능
② 작업의 유형은 프리 스타일(free style), 메이븐(maven) 등을 선택 가능
31
작업 설정
Configuring Job
32
작업 설정
① 작업( job)에 대한 기본 설정 입력
② 명칭, 설명, 작업을 수행할 장비(node) 정보 등을 설정.
33
① 소스 저장소 (SCM) 유형 및 접속 정보 등을 설정
② 체크 아웃 젂략(checkout strategy 및 저장소 브라우저 등 입력 가능.
34
① 빌드 세부 젃차(과정)을 입력
② 빌드를 시작하는 조건(trigger), 빌드 홖경 정보, 이젂/이후 처리 작업 등을 설정.
35
① 빌드 세부 젃차(과정)을 입력
② 빌드 완료 후 상세 정보를 기록할지 여부 등을 설정
36
① 빌드 종료 후 알림(notification) 및 로그 설정
② 빌드 완료 후, 다음 작업 처리에 대한 설정 등…
37
작업 상태 페이지 예시
38
젠킨스의 이점
Jenkins Benefits
39
젞킨스의 이점
• 젞킨스 플러그인의 확장성은 젞킨스가 다양한시스템과 연동될 수 있게끔 해준다.
• 젞킨스는 견고하고 지속적인 통합 시스템을 위한모든 것을 제공하며, 개발팀이 실용적인애자일(agile) 프로세스를 수행할 수 있도록 돕는다.
• 젞킨스는 애자일(agile) 원칙을 준수할 수 있도록지속적으로 실행 가능한 소프트웨어를 빌드 해준다.
40
결론
conclusion
41
결롞
• 지속적인 통합(CI)은 실용적인 애자일(agile)을 수행하고자 하는복잡한 프로젝트 팀들에게 매우 중요한 기술이다.
• 젞킨스는 다음과 같은 특징을 가짂 매우 좋은 CI 빌드서버이다.
• 훌륭한 핵심 기능 (Core Features)
• 플러그인 확장성 (Plugins Extensibility)
• 유연함 (Flexibility)