본론으로 들어가기 앞서, 이 글은 유닛테스트(Unit test)를 작성하는 프로젝트에 참여, 관리하는 분들께만 해당됩니다. 


유닛 테스트를 작성하는 프로젝트에서는 유닛 테스트 코드가 얼마나 잘 작성되고 있는지 수시로 확인하고자 하는 요구 사항이 항상 있기 마련입니다.  

이를 요청이 들어올 때 마다 처리해야 한다고 하면 매우 귀찮은 일이 되겠죠. 


반복되는 단순 작업은 최대한 컴퓨터(기계)에게 맡기는 게 여러가지로 좋기 때문에.. 젠킨스(Jenkins)나 허드슨(Hudson)을 사용 해서 매우 쉽게 소스코드 커버리지(code coverage)를 관리해봅시다. 


여기서는 파이썬(Python)에 대한 방법을 다룰 예정입니다. 

물론, 개발중인 언어별로 설정 방법이나 사용하는 플러그인이 조금씩 다를 수 있습니다. 



플러그인 설치 


Plugin Manager 페이지에서 'Cobertura Plugin' 를 검색해 봅시다. (젠킨스에서는 'Jenkins Cobertura Plugin'으로 찾으셔도 됩니다.)

'Cobertura Plugin'의 체크박스를 체크 하고 설치를 하면 됩니다. 




우분투(리눅스) 프로그램 설치 


coverage라는 툴을 사용해야 하니 설치 해 줍니다. 


$ sudo apt-get install python-coverage



젠킨스 설정


설치가 완료되면 코드 커버리지를 설정할 프로젝트에서 '구성(configure)' 메뉴에 들어가서 '빌드'파트에 'Execute shell'을 선택해서 추가해줍니다. 


아래와 같이 수행할 명령을 작성해 줍니다. 



저의 경우 장고(Django)에서 개발 중이므로 위와 같이 unit test를 수행했습니다. 

각자 필요에 따라 테스트 수행하는 코드만 변경하시면 됩니다. 


이렇게 하면 code coverage 결과물이 생성될겁니다. 

이 결과물을 젠킨스에서 보기 편하게 보여주도록 하는 작업만 추가하시면 됩니다. 


'빌드 후 조치 추가'에서 'Publish Cobertura Coverage Report'를 선택해서 추가해줍니다. 


해줄 작업은 매우 간단합니다. code coverage xml 파일을 지정해주기만 하면 됩니다. 


파일별로 실제 코드 라인별로 커버리지 결과를 보고 싶다면 '빌드 후 조치 추가'에서 'Publish HTML reports'도 선택해 줍시다. 

디렉터리와 HTML 파일명을 지정해 주기만 하면 됩니다. 




결과 조회


위 작업을 문제없이 잘 진행하셨다면 프로젝트(job)를 빌드시켜 봅시다. 

아래와 같은 결과 화면이 보일겁니다. 



코드 커버리지 결과 그래프나 'coverage Report'링크를 클릭하면 세부적인 정보를 확인 할 수 있습니다. 




참고로, 여기서는 실제 소스코드를 보면서 확인 하는건 불가능 합니다. 그건 HTML Report에서 확인이 가능합니다. 


혹시 궁금하신점이 있다면 댓글로 남겨주세요. ^^ 



Posted by KT한
,

젠킨스(Jenkins)를 사용해서 빌드를 관리하다보면 여러 개의 프로젝트가 서로 디펜던시(dependency)가 존재하는 경우가 있습니다. 

그럴경우 매번 여러개의 작업이 순차적으로 수행 되도록 관리하는것은 번거롭고 자칫 휴먼 에러가 발생 할 수도 있습니다. 

이런 경우 효율적으로 관리 할 수 있는 플러그인이 있습니다. 


'Build Pipeline' 플러그인은 디펜던시가 존재하는 복수개의 프로젝트를 관리하는데 매우 효율적입니다. 



추천은 저를 춤추게 합니다 ^^


  • 설치 절차


1. '젠킨스 관리'  > '플러그인 관리'에서 '설치 가능'탭을 선택 한 후 'Build Pipeline'을 검색합니다.

 



2. 플러그인이 정상적으로 설치되었는지 확인 한 후.. 



3. 메인 화면에서 뷰 탭의 '+' 표시를 눌러 '새 뷰'를 추가합니다. 




4. 뷰 타입을 'Build Pipeline View'를 선택하고 이름을 지정해줍니다. 



5. 시작하는 job을 선택해 줍니다. 

그외에 pipeline의 타이틀과 화면에 보여질 갯수 정도만 설정 해주면 됩니다. 



6. 적용을 하고 나면 초기 화면이 보여집니다. 

시작하는 job이 등록되어 보여집니다. 



7. 순차적으로 실행 될 다음 job을 등록하기 위해.. 

'first-job'의 설정 화면으로 들어갑니다. 


'Add post-build action' 버튼을 클릭해서 'Build other projects'를 선택해줍니다. 


8. 다음으로 수행할 job을 입력한 후 'Trigger only if build succeeds'를 선택해서 빌드가 성공 했을 때만 다음 빌드를 수행 하도록 설정해줍니다. 



9. 적용하고 나면 '하위 프로젝트'에 등록한 프로젝트가 보여지게 됩니다. 



10. 'pipeline-view' 탭에 들어가보면 새롭게 등록한 프로젝트가 등록된걸 확인 할 수 있습니다. 



11. 이제 마지막으로 수행할 job을 등록해 줍시다. 



12. 모두 정상적으로 등록되었군요. 

'Run'아이콘만 클릭하면 4개의 빌드가 알아서 순차적으로 수행될겁니다. 


이제 프로젝트 관리가 한결 수월해지겠군요. 



간혹 수동으로 다음 빌드를 수행하고자 한다면 'trigger'아이콘을 클릭해 주셔도 됩니다. 



  • 유용한 플러그인 배워보기

[프로그래밍] 젠킨스(Jenkins) 플러그인 활용 - Groovy Postbuild

Posted by KT한
,

젠킨스를 사용해서 소스 빌드를 수행하다 보면 간혹 빌드에 실패하는 경우가 발생하게 됩니다. 

이럴 경우 최대한 빠르게 수정된 소스를 반영하여야 같이 일하는 다른 개발자 분들이 받는 피해가 최소화 될 수 있겠죠. 


이를 위해 'Groovy Postbuild' 플러그인을 활용해서 빌드가 실패한 위치를 보기 쉽게 보여주는 방법에 대해 다뤄보고자 합니다. 


'Groovy Postbuild' 플러그인은 삼성전자 서초사옥에서 진행된 젠킨스(Jenkins) 사용자 모임에서 새롭게 알게되었는데요 사용법이 다양하더군요. 

그래서 저희 회사 프로젝트에 어떻게 적용 시키면 좋을까 고민하다가 빌드에 실패했을 때 원인파악에 조금이나마 도움이 될 수 있도록 적용해 보았습니다. 


사실, 그루비(Groovy)로 할 수 있는 일은 훨씬 더 다양할겁니다. 



추천은 저를 춤추게 합니다 ^^


  • 설치 절차 


1. 먼저 'Jenkins 관리' > 'Plugin 관리' 화면으로 들어갑니다. 

'설치 가능' 탭에서 'Groovy Postbuild'를 검색해서 설치 합니다. 




2. 아래처럼 'Groovy Postbuild'가 설치 되었는지 확인합니다. 




3. 'Groovy Postbuild'를 설정하고자 하는 'job'의 설정 화면에 들어갑니다. 

Post-build Actions 에서 'Add post-build action' 버튼을 클릭하면 추가 가능한 action list가 나옵니다. 

'Groovy Postbuild'를 선택하시면 됩니다. 




4. 스크립트 박스에 원하는 내용을 넣어줍니다. 

자세한 설명과 예제코드는 아래의 페이지를 참고하시면 됩니다. 


젠킨스 위키 - Groovy Postbuild


저는 'getLogMatcher' 함수를 사용해서 로그에서 원하는 문자열을 찾아 'addShortText' 함수로 출력하도록 작성하였습니다. 

스크립트 실행 결과 unittest 수행 중 fail 난 파일 명을 출력해주게 됩니다. 



5. 결과를 확인해 봅시다. 

빌드에 실패한 경우 해당 작업 오른편에 노란 상자로 파일명이 출력되고 있죠?

이런 식으로 원하는 값을 출력해주도록 설정 하시면 됩니다. 



Groovy Postbuild 스크립트를 활용해서 좀 더 편하게 빌드를 관리해보세요~ ^^


Posted by KT한
,

먼저 젠킨스(허드슨)를 설치하고 기본 설정은 하셨다는 가정하에 설명을 시작하겠습니다. 

젠킨스(Jenkins)와 허드슨(Hudson)은 이름만 바뀌었을 뿐 설정 및 기능은 거의 같습니다. 

만약 아직 설치/기본 설정을 하지 않으셨다면 이전 포스팅을 참고하세요~ 


젠킨스(허드슨) 설치

킨스(허드슨) 


오늘은 젠킨스를 좀 더 잘 활용 할 수 있는 방법에 대해 알아보려 합니다. 

젠킨스는 그 자체만으로도 충분히 훌륭한데요. 

플러그인 기능을 통해서 필요 및 취향에 맞게 최적화가 가능합니다. 



추천은 저를 춤추게 합니다 ^^


자 그럼 플러그인을 설치해 봅시다. 

1. 젠킨스 메인 페이지에 접속 합니다. 

좌측 메뉴에서 'Jenkins 관리'를 선택해서 들어가면 '플러그인 관리' 페이지가 있습니다. 


2. 설치하고 싶은 플러그인을 선택합니다. 

'설치 가능' 탭을 선택합니다. 

그럼 수백개의 설치 가능한 플러그인을 볼 수 있을 겁니다. 


이제 설치하고 싶은 플러그인을 찾아봅시다. 


3. 설치할 플러그인 고르기 

내가 원하는 플러그인이 맞는지 확인은 필수 겠죠?


관심있는 플러그인 이름의 링크를 클릭하면 설명 페이지가 열립니다. 

아쉽게도 설명은 한글로 번역이 되어 있지는 않습니다. 


참고로, 사용자 그래프가 있는데 설치하는데 참고용으로 유용합니다. 

아무래도 많은 사람들이 지속적으로 설치한다는 것은 그만큼 안정적이고 유용하다는 의미일 테니깐요. 

그렇지만 어디까지나 참고용일 뿐입니다! 


4. 플러그인 다운로드 및 설치 

플러그인 앞에 있는 체크박스에 체크 후 

화면 하단에 있는 설치 버튼을 클릭합니다. 


빌드 중일때 서비스를 재시작 하면 안되기 때문에 재시작 하지 않고 설치만 해둡니다. 


5. 다운로드 

선택한 플러그인이 설치 리스트에 추가되고 

열심히 다운을 받게 됩니다. 


6. 잠시 후 정상적으로 설치 된 것을 확인 할 수 있습니다. 

설치 후 빌드되는게 없다면 젠킨스를 재시작 하는 체크박스가 보입니다. 

바로 적용하고 싶다면 체크해 주시면 됩니다. 


이런 식으로 다양한 플러그인들을 설치해서 젠킨스를 좀 더 다양한 용도로 활용 할 수 있습니다. 


예를 들면, 

iOS 어플을 개발하기 위해서는 'Xcode plugin'을 설치하면 됩니다. 

설명도 자세하게 나와있어서 쉽게 설정이 가능합니다. (물론, 영어로 나와있긴 하지만요. )



추천은 저를 춤추게 합니다 ^^



유용하게 사용되는 플러그인 들


  • 버그 질라 연동

플러그인 'Bugzilla Plugin'을 설치 합니다. 

Jenkins 관리 > 시스템 설정 에 들어가면 'Bugzilla'라는 항목이 있습니다. 

버그질라 주소와 버그 ID와 연동할 포맷을 정규 표현식으로 설정 합니다. 

소스를 커밋 할 때 설명으로 입력한 문구에 정규표현식에 매칭되는 숫자가 나오면 버그질라 서버로 링크를 걸어 주는 겁니다. 



예를 들어 소스 커밋을 할 때 다음과 같이 입력 하게 되면.. '1234'링크를 클릭하면 버그질라 서버의 해당 버그 id로 연결이 되는 겁니다. 

Bug 1234 - 오류 수정 



  • SSH 연동

플러그인 'SSH plugin'를 설치 합니다. 

빌드 과정에서 ssh로 특정 host에 접속해서 작업을 해줘야 할게 있을 때 사용하면 좋습니다. 


Jenkins 관리 > 시스템 설정 에 들어가면 'SSH remote hosts'라는 항목이 있습니다. 

여기서 접속할 호스트에 대한 정보를 미리 설정 해줍니다. 



Job에서 설정 메뉴에 들어가서 빌드를 위한 명령을 입력 하는 과정에서 ssh가 필요하다면, 'Add build step'버튼을 눌러 'Execute shell script on remote host using ssh' 을 추가합니다. 


아래와 같은 메뉴가 나타나면 host를 선택하고 명령을 입력해줍니다. 

만약 명령 실행 순서를 변경하고 싶다면 아래처럼 해당 박스를 클릭 후 '드래그 앤 드랍'으로 위치를 변경해 주시면 됩니다. 


  • 재미난 기능

플러그인중에는 emotional-jenkins-plugin 아래처럼 재밌는 기능들도 있는데요.

빌드가 깨지면 온화했던 젠킨스 아저씨가 악마로 변하는 플러그인 이에요.  



이 외에도 수 많은 플러그인들이 존재합니다. 

필요한 기능이 있다면 한번 찾아보시고 설치해서 사용해 보세요~ 


  • 유용한 플러그인 배워보기

[프로그래밍] 젠킨스(Jenkins) 플러그인 활용 - Groovy Postbuild



Posted by KT한
,

먼저 젠킨스(허드슨)를 설치 하셨다는 가정하에 설명을 시작하겠습니다. 

젠킨스(Jenkins)와 허드슨(Hudson)은 이름만 바뀌었을 뿐 설정 및 기능은 거의 같습니다. 

만약 아직 설치 하지 않으셨다면 이전 포스팅을 참고하세요~ 


소스 자동 빌드 시스템 - 젠킨스(허드슨) 설치


Xcode와 같은 프로젝트에 활용하는 방법은 다음 포스팅을 참고하세요

소스 자동 빌드 시스템 - 젠킨스(허드슨) 플러그인 기능 활용 


추천은 저를 춤추게 합니다 ^^


1. 젠킨스 메인 페이지에 접속해봅시다

기본값은 서버 주소에 8080 포트로 접속하면 됩니다. (예: http://192.168.10.10:8080) 


2. 왼쪽 메뉴에서 "Manage Jenkins"를 선택합니다. 

 설정 메뉴가 나오면, "configure system"을 선택합니다. 

시스템의 기본 설정을 하기 위해서죠. 


3. 가장 먼저 작업 갯수를 설정 합니다. 

①에 있는 실행 갯수 만큼 좌측 메뉴에 작업 수가 늘어납니다. 

② enable security를 체크하면 유저 별로 권한 설정이 가능합니다. 

편의상 로그인한 유저라면 모든 설정이 가능하도록 했습니다. 


4. 좀 더 스크롤을 내려봅시다. 

요즘은 소스 관리에 주로 svn을 사용하죠.. 

① 버전이 기본은 1.4로 되어 있는걸 1.6으로 변경해줍니다. 

② 빌드가 깨졌을 때 연관된 사람들에게 메일을 보내주는 기능이 있습니다. 

신속한 대응을 위해서 유용하니 메일을 보낼 사람의 계정 정보를 넣어줍니다. 

(메일 수신인은 프로젝트 설정에서 합니다.)

설정이 끝났다면 저장합니다. 


5. 이제 프로젝트를 생성해봅시다. 

① New Job 을 클릭해봅시다. 

② 이름을 설정해주고..

③ 제일 무난한 free-style 프로젝트를 선택합니다. 

④ 만약 기존에 설정했던 설정을 템플릿 처럼 쓰고 싶다면 맨 아래 'copy existing job'을 선택하면 됩니다. 

입력 필드에 기존에 생성한 job 이름을 입력해줍시다. 

자동완성 기능을 지원하므로, 기존에 생성한 job 이름의 첫 글자만 기억하고 있으면 됩니다. 

(한글화 화면 - 브라우져의 언어에 따라 자동으로 선택됨)


6. 생성하면 자동으로 설정화면으로 넘어갑니다. 

① svn 정보를 넣어줍니다. 

② 최신 소스를 어떻게 관리할지 선택합니다. 

특별한 문제가 없다면 'svn update'를 하면 됩니다. 

하지만, 가끔 소스가 꼬이면 'Always check out a fresh copy'를 선택하면 기존 소스를 지우고

새로 받아서 다시 빌드를 시도합니다. 

알아두면 유용합니다. 

③ 만약 svn서버에 권한이 필요하다면 'enter credential' 링크를 클릭합니다. 

7. 위에서 자격 증명하기를 클릭하셨다면 이런 화면이 나옵니다. 

계정 정보와 비번을 입력해주면 됩니다. 


8. 좀 더 화면을 아래로 내려봅시다. 

① 주기적으로 소스를 가져다가 빌드를 수행하게 하려면 설정해줍니다. 

crontab을 생각하면 이해가 쉬울겁니다. 

② 빌드 단계를 추가해줍시다. 

③ 'Execute shell'을 선택하면 command를 입력할 수 있는 창이 뜨게 되고, 

순차적으로 진행할 명령들을 입력해줍니다. 

(명령창은 복수 개 등록 가능합니다. )

④ 빌드 성공 후 생성된 파일들을 어떻게 할지 설정해줍니다.  

⑤ 만약 빌드에 실패했을 때 담당자(개발자 혹은 QA-검증자)들에게 메일을 보내기 위해 사용합니다. 

수신인 메일 주소를 넣어주면 됩니다. 

⑥ 만약 컴파일을 실패할 때 마다 메일을 보내고 싶다면 체크해줍니다. 

빌드가 깨졌는데 이를 복구하지 못한 상태에서 

다른 사람들이 계속 소스 커밋을 하게 되면 폭탄메일을 받을 수 있으니 참고하세요. 

⑦ 빌드를 깨먹은 사람한테만 메일을 보내려면 이 옵션을 체크합니다. 

단, 메일 리스트에 입력해둔 사용자에게 보내는것과 별개로 동작하는 옵션입니다. 

메일 리스트에 아무도 입력하지 않고, 이 옵션만 체크해야만.. 

빌드가 깨졌을 때 실제로 소스를 커밋한 사람한테만 메일을 전송합니다. 


9. 사용자 계정 관리  

사용자 계정은 한가지만 조심하시면 됩니다. 

svn에 소스를 커밋한 계정을 보고 젠킨스가 자동으로 사용자 계정을 만들어 둡니다. 

때문에, svn과 동일한 계정으로 ID를 만들려고 하면 이미 존재하는 ID라고 오류가 발생하죠. 

이때는 관리자 계정으로 해당 계정의 설정 메뉴를 클릭하면 비번을 설정 할 수 있답니다. 


10. 이제 아래처럼 항상 햇님이 반짝 떠 있도록 관리만 잘 하시면 됩니다. 

① 특정한 순간에 수동으로 빌드를 시작하고 싶다면 '빌드 시작' 버튼을 누르면 됩니다. 

나머지 소소한 기능들은 차차 사용하면서 알아가면 될겁니다. ^^ 



※ 이 외에 세부설정은 hudson book을 참고하세요. 

book-hudson.pdf


  • 유용한 플러그인 배워보기

[프로그래밍] 젠킨스(Jenkins) 플러그인 활용 - Groovy Postbuild


Posted by KT한
,

지속적 통합관리(CI - Continuous Integration툴인 

젠킨스(구:허드슨)을 설치하는 방법에 대해 설명 드리겠습니다. 


2011년에 허드슨(Hudson)이 젠킨스(Jenkins)로 이름을 바꾸게 되었는데요. 

이는 오라클에서 Hudson이란 상표를 가지고 있어서 바뀌었다고 합니다. 


하지만, 이름만 바뀌었을 뿐 기능은 지속적으로 유지 및 향상 되어가고 있답니다. 

프로젝트의 안정적인 유지 관리를 위해서라도 이번 기회에 최신 버전으로 갈아타는것도 괜찮겠죠? 



※ 참고로 Fedora12에서 설치하였습니다.  



젠킨스 설정 방법에 대한 내용은 다음 포스팅을 참고하세요. 

소스 자동 빌드 관리 툴 - 젠킨스(허드슨) 설정 

추천은 저를 춤추게 합니다 ^^



1. 젠킨스(Jenkins) 다운 및 설치


- 향후 젠킨스(Jenkins)를 패치할 상황을 대비해서.. 

조금 번거롭더라도 yu리포지터리(repository)를 추가해 주도록 합니다. 


(YUM에 대해서 잘 모르시는 분은.. 온라인 업데이트 정도로 생각하시면 될것 같네요. )


# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key


- 정상적으로 추가했다면 yum으로 젠킨스를 설치합니다. 


# yum install jenkins


- 만약 젠킨스의 업데이트 정보를 정상적으로 받아오지 못한다면,  yum db를 한번 지워주세요. 


# yum clean all && yum install jenkins


-정상적으로 설치 되었는지 확인해봅니다.  


#  rpm -qa | grep jenkins
jenkins-1.457-1.1.noarch



2. 젠킨스를 실행하기 위해 필요한 java 설치


- 역시 yum으로 설치 해줍니다. 

(한번에 정상적으로 설치가 안되는 경우가 있습니다.  이럴 때는 한 번 더 실행해 줍니다. )


# yum install java


- 다음과 같은 파일들이 설치 되어야 합니다. 


Installed:

  java-1.5.0-gcj.x86_64 0:1.5.0.0-29.fc12 

  java-1.6.0-openjdk.x86_64 1:1.6.0.0-43.1.8.3.fc12


Dependency Installed:

  gmp.x86_64 0:4.3.1-5.fc12  java_cup.noarch 1:0.11a-1.fc12  jpackage-utils.noarch 0:1.7.5-3.8.fc12  

  libgcj.x86_64 0:4.4.4-10.fc12    sinjdoc.x86_64 0:0.5-9.fc12giflib.x86_64 0:4.1.6-3.fc12  

  jline.noarch 0:0.9.94-0.6.fc12  rhino.noarch 0:1.7-0.7.r2.fc12   tzdata-java.noarch 0:2010o-1.fc12  



3. 실행하기


- 정상적으로 설치 됐다면 간단하게 실행 가능합니다.


# service jenkins start


- 실행 결과:


Starting Jenkins                                           [  OK  ]




4. 접속하기


- 브라우져의 주소창에 서버 주소와 기본포트인 8080을 입력합니다. 


http://server주소:8080/


- 정상적으로 실행 된다면 이런 화면이 뜨게 됩니다. 

짜릿한 기분을 느낄 수 있는 순간이기도 하죠. ^ㅡ^




5. 잘 활용하기 


- 이제, 관리해야할 subversion 정보를 등록하고 자동으로 빌드를 수행하도록 하면 됩니다. 


  • 유용한 플러그인 배워보기

[프로그래밍] 젠킨스(Jenkins) 플러그인 활용 - Groovy Postbuild




Posted by KT한
,