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