Jenkins 1. 도구개요 2. 설치및실행 3. 주요기능
1. 도구개요 1.1 도구정보요약 도구명 Jenkins (http://jenkins-ci.org/) 라이선스 MIT License 소개 CI ( 연속적통합 ) 도구 빌드, 배포등반복되는작업을모니터링하는도구. 특징 쉬운설치및웹기반으로된쉬운 UI 제공 여러 project 동시 Build 제공 다양한언어 /OS 지원 주요기능 지속적인자동화빌드 지속적인자동화테스트 잡스케줄링 자동화된배포관리 실행환경 Windows, Linux, Mac OS X 등사전설치도구 JDK 1.7 이상 카테고리 구현최신버전 1.638 (2014. 10) 관련도구 Ant, maven, Git, junit, Clover 2
1. 도구개요 1.2 스크린캡쳐및주요기능 형상관리도구와연동하여소스가져오기 빌드및배포자동화 자동화를위한다양한플러그인 3
2. 설치및실행 세부목차 2.1 사전설치사항확인 2.2 설치 - package 2.3 설치 - war 2.4 실행 4
2. 설치및실행 2.1 사전설치사항확인 (1/2) JDK 가설치되어있어야한다 미설치시는 http://www.oracle.com/technetwork/java 에서다운받아설치한다 5
2. 설치및실행 2.1 사전설치사항확인 (2/2) Jenkins 는홈페이지에서 war 형태로배포되어별도의웹애플리케이션서버 (WAS) 에배포하여운영하지만 본자료에서는쉬운환경구성을위해, Jenkins 홈페이지에서윈도우운영체제사용자를위해제공하는 WAS 포함 Jenkins 패키지로설치해서진행한다. 6
2. 설치및실행 2.2 설치 - package (1/5) Jenkins 홈페이지에서설치파일다운로드 http://jenkins-ci.org 화면오른쪽아래의 Native packages > Windows 클릭하여설치파일다운로드 7
2. 설치및실행 2.2 설치 - package (2/5) 다운로드한 zip 파일의압축을푼다. Setup 파일을더블클릭하여설치를시작한다 Next 클릭 8
2. 설치및실행 2.2 설치 - package (3/5) 설치위치를설정한다. 다른위치에설정하려면 Change 를클릭해서지정해준다. 9
2. 설치및실행 2.2 설치 - package (4/5) Install 버튼을클릭하면설치가진행된다 10
2. 설치및실행 2.2 설치 - package (5/5) 설치가완료되면 Finish 를클릭해서설치를종료한다. 11
2. 설치및실행 2.3 설치 - war 방식 (1/2) Jenkins 홈페이지에서 war 파일다운로드 12
2. 설치및실행 2.3 설치 - war 방식 (2/2) 웹애플리케이션의 webapps 폴더로복사 13
2. 설치및실행 2.4 서비스기동 (1/4) 설치가종료되면자동으로기본브라우저가실행되고 Jenkins 가구동된다. 14
2. 설치및실행 2.4 서비스기동 (2/4) Windows 의 컴퓨터관리 > 서비스및응용프로그램 > 서비스 에서 Jenkins 를확인할수있으면서비스로정상적으로등록된것이다. 상태가 시작됨 이고시작유형이 자동 이면부팅시에자동으로실행된다. 15
2. 설치및실행 2.4 서비스기동 (3/4) Jenkins 설치시 8080 을기본포트로사용한다. 시스템에서 8080 포트를이미사용하고있는경우는 Jenkins 설치디렉토리 > Jenkins > jenkins.xml 파일에서포트설정을변경한다 16
2. 설치및실행 2.4 서비스기동 (4/4) jenkins.xml 을편집기나노트패드로열어 -httpport=8080 의포트를다른포트로변경한다 17
3. 주요기능 세부목차 3.1 Continuous Integration 3.2 Jenkins 의주요기능 18
3. 주요기능 3.1 Continuous Integration Jenkins 는 Continuous Integration( 지속적통합 ) 을지원하는도구로서여러개의 project 또는 File 들의 Build 를편리하고쉽게할수있는환경제공 Commit 에따른자동 Build 제공 : source Code 가형상관리도구에 commit 이되었을때마다 CI 도구가이를감지하고자동으로 Build 를수행하도록설정 일일 check out 과 Build : 개발자가출근후형상관리도구에서최신 Code 를내려받고, 출근전에현재 Code 를형상관리도구에저장함으로써 Source Code 에자동 Build 수행 Continuous Integration( 지속적통합, 이하 CI) 이란? 개발자가각각개발한 source Code 를모아서한꺼번에 Build 하는통합 Build 의과정을특정시점이아니라매일이나매주와같이아주짧은주기로수행함으로써통합에서발생하는오류와수정시간을줄이기위한기법 19
3. 주요기능 3.2 Jenkins 의주요기능 (1/2) Source Code 의일관성유지 - CI 도구를설정하기위해서는기본적으로형상관리도구가필요 - 대표적인형상관리도구는 Subversion, CVS, Git 등이존재 - CI 도구는이형상관리도구로부터 Project source 의 Code 를 Check out 받아서 Build 를수행 자동 Build - Build 가이루어지는시점을정하는두가지방법 - Commit 에따른자동 Build - Source Code 가형상관리도구에 Commit 이되었을때마다 CI 도구가이를감지하고자동으로 Build 를수행하도록설정 - Build 시간이길경우 Build 가적체되는현상이발생할수있음 - 정기적인 Build - 일정시각을정해서 Build 를하는방법 - Build schedule 이정해져있기때문에개발자들이 Commit 에대한 Schedule 을관리할수있고 Build 시간이오래걸리는대규모 Build 에도적정 20
3. 주요기능 3.2 Jenkins 의주요기능 (2/2) 자동테스팅코드기동 - Build 과정에테스트를포함 - 주기적인 Build 과정에테스트를포함시켜서 Build 와더불어테스팅을자동으로수행 - Software 의품질향상기여 일일 Check out 과 Build - 개발자가출근후형상관리도구에서최신 Code 를내려받고 (Check out), - 퇴근전에현장 Code 를형상관리도구에저장 (commit) 함으로써 source Code 에대한자동 Build 를수행 21
세부목차 4.1 예제소개 4.2 사용자등록 4.3 신규프로젝트생성 4.4 Git 플러그인설치 4.4 빌드및후속작업설정 22
4.1 예제소개 Web 개발을위한개발환경하에서 Git 에저장되어있는소스를 Jenkins 에서읽어와서 Maven 으로빌드를수행하고빌드된파일을 WAS 에배포 Maven 과 Git 이설치되어있다고가정하고, GitHub 의저장소를복제해서로컬저장소를구성하고 Jenkins 와연동 - Maven 의설치및사용법은 SW 자산뱅크 > SW 개발도우미의 Maven 자료참고 - Git 의설치및사용법은 SW 자산뱅크 > SW 개발도우미의 Git 자료참고 1. Git 저장소구성 2. 사용자등록과권한을설정 3. Jenkins 에서형상관리도구인 Git 을연동하기위한설정 4. Jenkins 신규아이템추가및설정 5. Jenkins 에서빌드실행 23
4.2 Git 저장소구성 Git bash 에서 git clone https://github.com/hanmomhanda/simplejavawebapp.git 를실행해서 GitHub 에있는저장소를 D:\swbank\gitRepo 폴더에복제 24
4.3 Jenkins 사용자등록 (1/6) Jenkins 관리 > Configure Global Security 를선택한다 25
4.3 Jenkins 사용자등록 (2/6) 사용자와권한을설정할수있는화면이표시된다 26
4.3 Jenkins 사용자등록 (3/6) Enable security 를체크한다. Security Realm 에서 Jenkins own user database 를선택해서 Jenkins 내부 DB 를사용하도록하고, 사용자가입허용을선택한다. Authorization 에서 Logged-in users can do anything 을선택하고 Save 클릭 27
4.3 Jenkins 사용자등록 (4/6) 참고로 Project-based Matrix Authorization Strategy 를클릭하면, 다음과같이세부적으로권한을관리할수있다. 28
4.3 Jenkins 사용자등록 (5/6) 로그인화면에서 계정생성 클릭 29
4.3 Jenkins 사용자등록 (6/6) 사용자정보입력후 Sign Up 클릭 30
4.4 Git 연동설정 (1/5) Jenkins 관리 > 플러그인관리클릭 31
4.4 Git 연동설정 (2/5) 설치가능 탭을클릭하고필터에 Git 입력 32
4.4 Git 연동설정 (3/5) GIT plugin 설치 - GIT plugin 을설치해야프로젝트관리에서형상관리도구로 Git 을지정할수있다. 33
4.4 Git 연동설정 (4/5) 설치진행및완료화면 - 새로설치된플러그인은성공으로표시 - 이미설치되어있던플러그인은업데이트를위해 Jenkins 재시작필요 - 맨아래체크박스클릭 34
4.4 Git 연동설정 (5/5) Jenkins 재시작 - Jenkins 가자동으로재시작 35
4.5 신규아이템생성 (1/10) 실행초기화면에서 새로운 Item 을를클릭한다.. 36
4.5 신규아이템생성 (2/10) Item 이름을입력한다. 프로젝트종류에따른설명은 Jenkins 화면에한글로잘나와있다. 본자료에서는 Freestyle project를선택해서진행한다. 37
4.5 신규아이템생성 (3/10) 신규아이템생성화면 38
4.5 신규아이템생성 (4/10) 소스코드관리 항목에서 Git 을선택하고아래와같이입력 - Repository URL : Git 저장소경로 ( 예제에서는 file://d:/swbank/gitrepo/simplejavawebapp) - Branch Specifier : 브랜치이름 ( 예제에서는 master) 39
4.5 신규아이템생성 (5/10) 빌드유발 항목은그대로둔다. - 빌드유발 항목에서아무선택도하지않으면 Jenkins 웹화면에서명시적으로 Build 를실행할때만빌드가유발된다. 다른옵션 - 빌드를원격으로유발 : 특정 URL 에인증토큰과함께접속하면빌드실행 - Build after other projects are built : 다른프로젝트의빌드가끝나면이항목빌드 - Build periodically : 주기적으로빌드실행 - Poll SCM : 주기적으로 SCM 을확인해서달라진것이있으면빌드실행 - 주기옵션. 분시일월요일의 5 가지항목으로지정. 예 ) 매 15 분마다 : H/15 * * * * 월 ~ 금요일까지 9~16 시사이에매 2 시간마다 : H 9-16/2 * * 1-5 40
4.5 신규아이템생성 (6/10) Build 항목의 Add build step 을클릭해서 Execute Windows batch command 를추가하고아래와같이입력 - mvn 을실행하기위한 JAVA_HOME 설정및 goal 지정 41
4.5 신규아이템생성 (7/10) Build 항목의 Add build step 을클릭해서 Execute Windows batch command 를하나더추가하고아래와같이입력 - 빌드결과생성된 war 파일을웹애플리케이션서버에복사 42
4.5 신규아이템생성 (8/10) 빌드후조치옵션 - 빌드후조치옵션으로빌드완료후수행할일을지정할수있다. - 예제에서는별도로지정하지않는다. 하위테스트결과집계빌드결과물파일생성다른프로젝트빌드 JUnit 테스트결과보고발행 Javadoc 문서발행사용추적파일지문기록 Git publisher 실행이메일알림 43
4.5 신규아이템생성 (9/10) 아이템저장 - 화면하단의저장을눌러서아이템구성내용을저장한다. 44
4.5 신규아이템생성 (10/10) 아이템 ( 프로젝트 ) 메인화면이보여진다. 45
4.6 빌드실행 (1/7) Jenkins 의 TestProject 메인화면에서왼쪽의 Build Now 클릭 46
4.6 빌드실행 (2/7) Jenkins 빌드진행 47
4.6 빌드실행 (3/7) Jenkins 빌드완료 - 빌드가성공하면파란색동그라미로표시된다. 48
4.6 빌드실행 (4/7) Jenkins 작업내용확인 49
4.6 빌드실행 (5/7) Jenkins 작업내용콘솔확인 50
4.6 빌드실행 (6/7) Jenkins 작업내용콘솔확인 - 테스트결과 51
4.6 빌드실행 (7/7) Jenkins 작업내용콘솔확인 - 최종빌드및배포성공 52