본문 바로가기
TREND

Jenkins : 빌드 자동화를 통한 지속적 통합 툴

by ojava 2015. 9. 1.
반응형

Jenkins, Jenkins, Jenkins

한 번도 못들어 본 이름이라면 Hudson은 알지도 모른다.


초창기에는 Sun Microsystem에서 허드슨(Hudson)이라는 이름으로 출시된 프로젝트였지만

오라클과의 상표권문제로 인해 이름을 변경하여 Jenkins로 분리되어 나왔다고 한다. 

 

 

 

 




Jenkins는 Java 기반의 오픈소스로 지속적 통합관리(Continuous Integration) 를 가능하게 하는 툴이다.

지속적 통합관리에 대해 간단하게 얘기하면 여러 사람들이 개발한 내용에 대해서 한 번에 합쳐서 빌드해주는 기능으로

혼자 개발하는 프로젝트보다는 여러명이 같이하는 프로젝트에서 좀 더 유용한 관리툴이라고 볼 수 있다.


Apache tomcat과 같은 서블릿 컨테이너 서버 기반으로 돌아가는 시스템이며

CVS, Subversion (SVN), Git 등 다양한 버전관리 툴을 지원하고, 

Ant나 Maven 기반의 프로젝트 뿐 아니라 임의의 쉘 스크립트와 Windows 배치 명령까지 실행시킬 수 있다.

 

 

 

 

 

정보를 더 알아보기 위해서 Jenkins 공식 홈페이지에 접속했을 때 볼 수 있던 화면으로,

 

 

 

Jenkins가 오픈소스이다보니 이 자체의 기능 추가를 위해서 다양한 개발자들이 개발에 참여하고 있고

이 자체도 하나의 프로젝트로서 Jenkins로 관리되고 있음을 확인할 수 있었다.

(빌드 실패 이력 히스토리를 날씨처럼 나타나서 살짝 귀여운 맛도 있다. 참고로 구름은 계속 빌드 실패했다는 뜻이다.)

 

 

 



Jenkins의 특징을 공식 홈페이지에서 발췌하였다.

<출처 : https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins>


1. 쉬운 설치

jenkins.war 파일로 제공하며 java -jar jenkins.war 명령어면 충분하다.

또는 그 자체로 서블릿 컨테이너에 배포하면 되므로, 이 이후에 추가적인 설치나 데이터베이스도 필요없다.


2. 친숙한 WEB GUI를 통해 매우 쉽게 전체적인 설정 변경이 가능하다.

잘못된 내용은 바로 체크해서 inline help를 제공하니 수정도 쉽다.


3. 버전관리 툴에서 빌드에 사용될 목록을 변경해서 생성할 수 있는 기능을 제공한다. (Change set)

이는 또한 저장소 부하를 감소시키기 위해 효율적인 방법으로 수행된다.


4. '최근 빌드' 또는 '최근 성공한 빌드' 내역에 대한 링크를 제공한다. 


5. RSS 또는 E-mail을 통해 실시간으로 빌드 실패 내역에 대해 통지를 받아서 빌드결과를 확인할 수 있다. 


6. 빌드내역은 빌드가 완료된 이후에도 태깅이 가능하다.


7. JUnit 테스트 보고서는 표로 만들어지거나, 합계내어지거나 이력에 대한 기록 표현이 가능하다. 

이력은 그래프로 그려질 수 있다.


8. 여러대의 컴퓨터를 통해 분산 빌드나 테스트가 가능하다. 

이를 통해 유휴 워크스테이션을 활용할 수 있다.


9. Jenkins는 build에 사용되는 jar와 각 jar의 사용 버젼을 계속적으로 기록한다.

심지어 Jenkins 외부에서 생성된 jar에 대해서도 기능을 제공하므로 종속성을 추적하는데 도움이 된다.


10. 3rd party 플러그인을 통한 확장이 가능하다. 

Jenkins가 지원하길 바라는 툴이나 프로세스가 있다면 본인이 직접 만들 수도 있다.




다양한 플러그인 지원 얘기가 나왔으니 어떤 기능이 있는지도 알아보자.


- Java 이외의 언어로 작성된 프로젝트들에 Jenkins 적용

- 대부분의 버전관리툴과 대용량 데이터베이스와의 통합기능

- 각각의 플러그인을 통한 Build tool 지원

- 시각적인 형태 (UI) 또는 신규 기능 추가 가능

- 플러그인을 통해 지원되는 다양한 포맷의 테스트 보고서 생성 가능 (ex : JUnit)

- 보고서 표시, 트렌드 생성, GUI를 통한 렌더링 기능 제공





 

뭔가 이것도 되고 저것도 되는 프로그램일수록 나를 힘들게 하는데

이것도 일단 깔아보면 알겠지... 다양한 개발자가 있는 프로젝트에 적용하는 건 못하더라도

로컬에 설치하고 설정하는 정도까지는 테스트 해보도록 할 수 있당.

 

 

 

 

 

설치파일 다운로드

 

 

 

 

가장 공식적인 루트로 다운받는 것이 안전하므로 Jenkins 홈페이지에서

따끈따끈한 버전으로 다운받도록 하겠다. 1.627 버전으로 설치할 예정이며

Windows, Ubuntu/Debian, Mac OS X 등 각 OS를 위한 Native package 들도 제공하지만

war파일을 이용한 설치 방법을 확인하기 위해서 Jenkins.war 파일을 다운받도록 하겠다.

 

 

설치사양으로 JRE 1.7 version 이상이 필수적이다. (need to 라고 한다 need to)

아까 홈페이지에서 다운받은 jenkins.war 파일이 있는

 

 

 

 

 

 

 

 

 

war 파일을 풀어주면 알아서 경로를 잡고 주-우욱 설치가 되는데 전체적으로 설치되는데

많이 걸려도 3분 정도 소요되는 걸로 확인된다.

이제 서비스가 동작할테니 Windows Service로 설정하려고 했더니

 

 

 

 

 

Aㅏ...... cmd 창을 닫아버리면서 서비스도 8:45

 

 

 

 

어떻게 다시 시작해야 하나 고민했는데 그냥 무턱대고 다시 war 파일을 푸는것부터 시작했더니

Jenkins is fully up and running 하면서 실행된다고 뜬다.

 

잘 돌아가고 있는 걸 확인했으면 이제 주소창에 http://localhost:8080 을 치고 접속하면 Jenkins 관리 페이지가 뜬다.

 

 

 

 

 

 

기본 사진 보정 프로그램을 사용해서 편집하려니 저런 화살표를 쓰는 점을 양해바란다.

그렇다고 포토샵을 켜자니....

 

먼저 Windows에서 Service로 동작할 수 있도록 관리화면으로 들어가서 설정해보려고 한다.

왼쪽에 위치한 메뉴에서 Jenkins 관리 메뉴를 클릭한다.

 

 

 

 

 

 

 

아 물론 이 과정은 Windows 용 패키지를 통해 설치하는 경우 모두 설치과정에

포함되어있으므로 패스해도 되는 과정입니다. 저는 jenkins.war로 설치했기 때문에...

 

 

 

 

Install as Windows Service

 

메뉴로 접근하면 윈도우 운영체제에서 서비스로 동작할 수 있도록 세팅하는 화면이 나온다.

 

 

 

 

알아서 Jenkins가 설치된 영역을 디렉토리로 설정하고 띄우기 때문에 강제로 변경한 경우가 아니면

초기 세팅 그대로 Install 버튼을 누르시면 되겠습니다.

역시 설치는 Next Next Next Finish 과정을 따르는 게 가장 좋은 거 같아요 ㅎ.ㅎ

 

 

 

 

 

설치를 마치고 나면 명령어로 수행시킨 Jenkins를 중단시키고 윈도우 서비스로 새롭게 시작할 것인지를 물어봅니다.

No 버튼도 없으니 그냥 Yes를 눌러야 합니다. 선택권따윈 주지 않아여 단호박임.

 

 

 

 

 

 

 

 

cmd 창을 보니.. 진짜 중단 시켜버렸네요.

2시쯤에 시작시켜놓고 다른 일 하다가 블로그에 넣으려고 이제 설치버튼을 눌렀더니

3시 30분 쯤에 중단된 걸 확인할 수 있습니다.

 

Starting a Windows service -> JVM is terminating. Shutting down Winstone

 

 

 

 

 

다음과 같은 재 시작 중입니다 기다려주세요 ^.~ 하는 화면을 기다리면

아까 봤던 Jenkins 초기화면이 뜨므로 하염없이 기다릴필요 없이 다른 일 하고 계시면 됩니다.

 

 

 

서비스에 잘 등록되었는지 확인을 위해 윈도우 서비스 관리화면에 접속하니

 

 

 

 

아주 잘 등록되었습니다. 이제 자동으로 서비스가 시작되므로

localhost:8080 으로 접속하면 바로 Jenkins 관리화면 접근이 가능합니다.

 

 

 

 

 

 

제일 기본적인 세팅까지는 끝냈으니 다음 포스팅에는 플러그인 설치 및 기타 등등을 해보겠습니다.

 

반응형

'TREND' 카테고리의 다른 글

Redmine : Project Management Web Application  (3) 2015.09.03
TELNET, FTP, SSH, SFTP 용어 정리  (0) 2015.09.02
eclipse에서 JUnit을 이용한 테스트 수행  (0) 2015.08.26
JUnit Cookbook  (0) 2015.08.25
테스트 프레임워크 xUnit  (0) 2015.08.24