SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
젞킨스 설치 및 설정
(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
목차
• 소개
– 지속적인 통합이란?
– 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 View
Web 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
젞킨스 – 빌드 젃차
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
싞규 작업 (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)

Contenu connexe

Tendances

BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveNetronome
 
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014devCAT Studio, NEXON
 
The Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPGregor Schmidt
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMThe Linux Foundation
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersPlatform9
 
Devops - Microservice and Kubernetes
Devops - Microservice and KubernetesDevops - Microservice and Kubernetes
Devops - Microservice and KubernetesNodeXperts
 
Built for performance: the UIElements Renderer – Unite Copenhagen 2019
Built for performance: the UIElements Renderer – Unite Copenhagen 2019Built for performance: the UIElements Renderer – Unite Copenhagen 2019
Built for performance: the UIElements Renderer – Unite Copenhagen 2019Unity Technologies
 
Anatomy of the loadable kernel module (lkm)
Anatomy of the loadable kernel module (lkm)Anatomy of the loadable kernel module (lkm)
Anatomy of the loadable kernel module (lkm)Adrian Huang
 
Page cache in Linux kernel
Page cache in Linux kernelPage cache in Linux kernel
Page cache in Linux kernelAdrian Huang
 
Read-only rootfs: theory and practice
Read-only rootfs: theory and practiceRead-only rootfs: theory and practice
Read-only rootfs: theory and practiceChris Simmonds
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBshimosawa
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Novell
 
Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...
Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...
Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...The Linux Foundation
 
KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)Stephen Gordon
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
Intro to Helm for Kubernetes
Intro to Helm for KubernetesIntro to Helm for Kubernetes
Intro to Helm for KubernetesCarlos E. Salazar
 

Tendances (20)

BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep Dive
 
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
 
The Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEP
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
 
Devops - Microservice and Kubernetes
Devops - Microservice and KubernetesDevops - Microservice and Kubernetes
Devops - Microservice and Kubernetes
 
Built for performance: the UIElements Renderer – Unite Copenhagen 2019
Built for performance: the UIElements Renderer – Unite Copenhagen 2019Built for performance: the UIElements Renderer – Unite Copenhagen 2019
Built for performance: the UIElements Renderer – Unite Copenhagen 2019
 
Anatomy of the loadable kernel module (lkm)
Anatomy of the loadable kernel module (lkm)Anatomy of the loadable kernel module (lkm)
Anatomy of the loadable kernel module (lkm)
 
Page cache in Linux kernel
Page cache in Linux kernelPage cache in Linux kernel
Page cache in Linux kernel
 
Read-only rootfs: theory and practice
Read-only rootfs: theory and practiceRead-only rootfs: theory and practice
Read-only rootfs: theory and practice
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
 
Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)
 
Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...
Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...
Rootlinux17: Hypervisors on ARM - Overview and Design Choices by Julien Grall...
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Intro to Helm for Kubernetes
Intro to Helm for KubernetesIntro to Helm for Kubernetes
Intro to Helm for Kubernetes
 

Similaire à 젠킨스 설치 및 설정

01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
Continuous integration: the architecture of open source application
Continuous integration: the architecture of open source applicationContinuous integration: the architecture of open source application
Continuous integration: the architecture of open source application김진태 Jintae Kim
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
Service operation
Service operationService operation
Service operationTerry Cho
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합중선 곽
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Park JoongSoo
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기hanbeom Park
 
Configuration management best practices
Configuration management best practicesConfiguration management best practices
Configuration management best practicesHyunil Shin
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211Ji-Woong Choi
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례if kakao
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
 
시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬
시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬
시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬위키북스
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 

Similaire à 젠킨스 설치 및 설정 (20)

01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
Continuous integration: the architecture of open source application
Continuous integration: the architecture of open source applicationContinuous integration: the architecture of open source application
Continuous integration: the architecture of open source application
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
Service operation
Service operationService operation
Service operation
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
Configuration management best practices
Configuration management best practicesConfiguration management best practices
Configuration management best practices
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
2015 oce specification
2015 oce specification2015 oce specification
2015 oce specification
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬
시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬
시스템/네트워크 관리자가 바로 쓸 수 있는 파이썬
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 

Plus de 중선 곽

자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
Test driven development short lesson
Test driven development   short lessonTest driven development   short lesson
Test driven development short lesson중선 곽
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody중선 곽
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2중선 곽
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안중선 곽
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)중선 곽
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)중선 곽
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out중선 곽
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷중선 곽
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)중선 곽
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개중선 곽
 
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념중선 곽
 

Plus de 중선 곽 (20)

자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
Test driven development short lesson
Test driven development   short lessonTest driven development   short lesson
Test driven development short lesson
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
 
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념
 

젠킨스 설치 및 설정

  • 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) ☞ 모든 기능을 다 쓰지는 않습니다만, 선택의 폭은 넓을수록 좋은 겁니다.
  • 11. 11 설치 및 환경 설정 Installation & Configuration
  • 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) 등을 선택 가능
  • 32. 32 작업 설정 ① 작업(job)에 대한 기본 설정 입력 ② 명칭, 설명, 작업을 수행할 장비(node) 정보 등을 설정.
  • 33. 33 ① 소스 저장소 (SCM) 유형 및 접속 정보 등을 설정 ② 체크 아웃 젂략(checkout strategy 및 저장소 브라우저 등 입력 가능.
  • 34. 34 ① 빌드 세부 젃차(과정)을 입력 ② 빌드를 시작하는 조건(trigger), 빌드 홖경 정보, 이젂/이후 처리 작업 등을 설정.
  • 35. 35 ① 빌드 세부 젃차(과정)을 입력 ② 빌드 완료 후 상세 정보를 기록할지 여부 등을 설정
  • 36. 36 ① 빌드 종료 후 알림(notification) 및 로그 설정 ② 빌드 완료 후, 다음 작업 처리에 대한 설정 등…
  • 39. 39 젞킨스의 이점 • 젞킨스 플러그인의 확장성은 젞킨스가 다양한 시스템과 연동될 수 있게끔 해준다. • 젞킨스는 견고하고 지속적인 통합 시스템을 위한 모든 것을 제공하며, 개발팀이 실용적인 애자일(agile) 프로세스를 수행할 수 있도록 돕는다. • 젞킨스는 애자일(agile) 원칙을 준수할 수 있도록 지속적으로 실행 가능한 소프트웨어를 빌드 해준다.
  • 41. 41 결롞 • 지속적인 통합(CI)은 실용적인 애자일(agile)을 수행하고자 하는 복잡한 프로젝트 팀들에게 매우 중요한 기술이다. • 젞킨스는 다음과 같은 특징을 가짂 매우 좋은 CI 빌드 서버이다. • 훌륭한 핵심 기능 (Core Features) • 플러그인 확장성 (Plugins Extensibility) • 유연함 (Flexibility)