달력

102021  이전 다음

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  
hudson.war 파일은 내부에 Winstone이라는 웹서버를 포함하고 있습니다. 기본포트는 8080과 ajp13 연결포트인 8009를 사용하고 있지요.
톰캣 등과 같은 서버에서 포트가 겹칠 경우 이 포트를 바꾸려면 다음과 같이 옵션을 주면 됩니다.

java -jar hudson.war --httpPort=7070 --ajp13Port=-1

-1은 사용하지 않는다는 뜻입니다. 위의 경우 7070포트로 접근이 가능합니다.


세부적인 Winstone의 옵션은 사이트를 참고하세요.
http://winstone.sourceforge.net/
Posted by 케누 kenu허광남

댓글을 달아 주세요

Hudson 업그레이드

java 2008. 11. 26. 15:57
Hudson 메인 페이지의 Manage Hudson 메뉴로 이동하면 신규 버전 알림이 노란 줄로 뜹니다. download 링크를 클릭하면 바로 다운 받을 수 있죠. 그리고 플러그인의 업데이트는 Manage Plugins 설명에 (updates available) 이라고 빨간 글씨로 보입니다.


Manage Plugins로 가면 Updates 탭에 해당 플러그인이 보입니다. 체크하고 우측 하단의 Install 버튼을 클릭하면 업데이트가 진행됩니다. 

대체로 설치 후에 hudson을 재시작해줘야 됩니다.



그리고 다른 얘기인데, findbugs 플러그인에서 보여주듯이 okjsp사이트의 버그는 다 잡았습니다. 냐호~



Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. ncrash  댓글주소 수정/삭제 댓글쓰기 2008.11.26 16:20

    벌레 숙청하셨군요 ㅊㅋㅊㅋ

    문득 세스코가 생각나는데요 ㅎㅎ

  2. Kenny  댓글주소 수정/삭제 댓글쓰기 2008.11.26 16:46

    보통은... CheckStyle 보다 PMD 가 에러가 적게 잡혀요..
    PMD는 기본 옵션이 적은 편이라..
    PMD 먼저 하시고 CheckStyle 하시거나...
    코드 스타일에 너무 신경 안쓰시고 싶으시면 PMD 만으로도 충분해요.

  3. Herlock  댓글주소 수정/삭제 댓글쓰기 2008.11.27 10:14

    너무 옛날버전을 사용하고 있어서 그런지 업그레이드 메뉴가 안뜨네요 ㅎㅎ
    설정이랑 페이지 좀 수정한거 저장하고 통째로 엎어야 겠군요 ㅎㅎ

hudson의 최상위 페이지의 메뉴 "Manage Hudson(Hudson의 관리)" 메뉴로 갑니다.

Manage Plugins 를 선택하고, Available탭에서 findbugs 플러그인을 설치합니다.

hudson을 콘솔에서 재시작하고, 프로젝트의 configure 메뉴에 가면 findbugs 활성화 체크박스가 하단에 보입니다. 체크하면 hudson에서 findbugs 플러그인이 활성화됩니다.

Build 섹션에서 Add Build Step버튼을 클릭해서 findbugs 빌드를 추가합니다. 빌드서버에 설치된 findbugs 경로를 findbugs.home 에 지정합니다. 환경변수에 $FINDBUGS_HOME으로 지정되면 이 과정이 필요없습니다.

build.xml 의 findbugs 타겟 소스는 참고로 다음과 같습니다.
    <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
   <target name="findbugs">
      <findbugs home="${findbugs.home}"
                output="xml:withMessages"
                outputFile="findbugs.xml" >
        <sourcePath path="${basedir}/src" />
        <class location="${publish.home}/WEB-INF/classes" />
      </findbugs>
    </target>

콘솔에 다음과 같은 메시지가 찍히면서 findbugs에 대한 보고서를 확인할 수 있습니다.

참조하는 jar파일의 경로가 지정되지 않으면 이런 메시지가 나타납니다.

 [findbugs] The following classes needed for analysis were missing:
[findbugs]   javax.servlet.http.HttpServlet
[findbugs]   javax.servlet.Servlet

findbugs 태스크에 다음과 같은 jar경로가 있는 줄을 추가하면 위 경고가 해결됩니다.
      <findbugs home="${findbugs.home}"
                output="xml:withMessages"
                outputFile="findbugs.xml" >
       <auxClasspath path="${catalina.home}/common/lib/servlet-api.jar" />
        <sourcePath path="${basedir}/src" />
        <class location="${publish.home}/WEB-INF/classes" />
      </findbugs>


버그의 추이가 그래프로 나타납니다.

버그의 자세한 리포트는 프로젝트 왼쪽 메뉴의 FindBugs Warnings 를 통해서 확인가능합니다.

이제 남은 일은 버그의 수를 줄이는 것이겠죠.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. ncrash  댓글주소 수정/삭제 댓글쓰기 2008.11.27 17:03

    어제 세미나 듣고 바로 적용해봤어요 잘 되네요^^;

    약간의 삽질끝에 적용해보니 250개의 warring이 ㅎㄷㄷ

    또 하나 배우고 가네요 항상 감사합니다

허드슨 강의하면서 배경지식으로 설명했던 지속적인 통합의 팀 적용에 관한 이야기입니다.

위 링크에 첨부파일로 올려놓았습니다.

관련 마인드맵은 이전 블로그에 올려놓았습니다.

Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. [짱가™]  댓글주소 수정/삭제 댓글쓰기 2008.11.18 13:43 신고

    형~~~ http://www.xmind.net/ 얘 좋은 것 같아요~~~
    무료로는 FreeMind 보다는 훨씬 많은 기능을 제공해 주는 것 같구요.

    회원가입을 하면 온라인에서 마인드맵을 공유할 수 있으며 프로 계정(49불/년)의 경우 프레젠테이션, 마이크로소프트 오피스 등을 지원한데요~~

okjsp 세미나 자료

java 2008. 11. 15. 16:07
Hudson을 이용한 프로젝트 모니터링

Continuous Integration in Practice


http://freemind.sf.net 형식의 파일입니다.

Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 박현준  댓글주소 수정/삭제 댓글쓰기 2008.11.16 12:52

    어제 세미나 잘 들었습니다.
    끝나고 잡다한 이야기를 나누고 싶었는데 아쉽게도 1시에 다른 강의를 들으러 가야해서 끝나고 바로 가버렸어요.
    다음 세미나에서 또 뵙죠 :-)

  2. 아이  댓글주소 수정/삭제 댓글쓰기 2008.11.17 18:19

    좋은 자료 감사합니다. 세미나도 잘 들었습니다.^^

지속적인 통합 빌드에서 crontab 처럼 주기적으로 빌드가 돌게 할 수 있습니다. 아래는 10분 주기로 실행하도록 한 결과입니다. trend 링크를 누르면 다음과 같이 그래프로도 확인이 가능합니다.

빌드의 실행 시점은 다음과 같이 정할 수 있습니다. 우측의 ? 아이콘을 클릭하면 해당항목에 대한 설명이 보이게 됩니다. 빌드에는 분 시간 일 월 요일 5가지 설정을 하게 됩니다. 매 10분마다 설정하려면 0,10,20,30,40,50 처럼 공백없이 분을 나열하고 이후 4항목을 * * * * 로 채우면 됩니다.

빌드 로그가 많이 남을까봐 Discard Old Builds처럼 옛날 빌드기록을 삭제할 수 있습니다. 7일간 최대 200개의 빌드기록을 보관한다는 의미입니다.


소스코드를 가져오는 방법은 다음과 같습니다. CVSROOT를 적어주면 됩니다. 아이디와 패스워드가 노출되는데, 인트라넷용이라는 전제가 있습니다. 또한 빌드전용 CVS아이디를 만들어 주는 것도 괜찮을 것입니다.

간략하게 hudson의 설정에 대해서 살펴보았습니다.





Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. yeoupooh  댓글주소 수정/삭제 댓글쓰기 2008.11.13 16:34 신고

    hudson 정말 잘 만들어진 툴이죠. jabber plugin 설치하시고 google talk 설정해 놓으면 빌드 끝나고 메신저로 날려주는데, 전 이게 맘에 들드라구요. ^^


지속적인 통합 툴인 Hudson(https://hudson.dev.java.net)은 기업 내부 즉 인트라넷용입니다. 회사 밖에서는 접근하지 않는다는 것을 기본으로 설정하게 되어있죠. 만약 인터넷 같은 외부에 노출이 되는 경우는 인증을 걸어서 아무나 컨트롤하지 못하도록 하는 것이 중요합니다.

구글에서 "hudson access control"이라고 검색해봤습니다. wiki페이지가 나오는군요.


첫번째 링크를 클릭해서 들어가면 Hudson 보안강화하기 위키페이지가 나옵니다.
http://hudson.gotdns.com/wiki/display/HUDSON/Securing+Hudson

보안 레벨을 다양하게 지원하는데, 토픽은 다음과 같습니다.

Topics


저는 간략하게 설정해 보았습니다. 아직 경험이 많지 않아서 성큼성큼 나아가기 힘드니까요.
Quick and Simple Security 페이지의 설명에서 발췌한 내용입니다.

$ java -jar hudson.war --argumentsRealm.passwd.user=password --argumentsRealm.roles.user=admin

이러한 형식으로 시작 옵션을 줍니다.

$ java -jar hudson.war --argumentsRealm.passwd.kenu=okjsp --argumentsRealm.roles.kenu=admin

user와 password 부분을 변경해 주면 됩니다. 그리고 Hudson 설정에서 보안을 사용한다고 설정해야 합니다.
Hudson 관리(Manage Hudson) > Configure System 메뉴를 선택합니다.

설정화면에서 위쪽 설정 옵션 중 Enable security를 체크합니다. 하단의 옵션은 Delegate  to servlet container 에 그 아래 옵션은 Legacy Mode 를 선택하고 저장하면 됩니다.


설정이 완료되고 옵션을 주어서 시작하면 다음과 같은 메시지를 볼 수 있습니다.


로그인 id별  권한처리도 가능하다 하니 위키 문서를 참고하시면 될 것입니다.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 지니랜드  댓글주소 수정/삭제 댓글쓰기 2008.11.11 09:06

    좋은 자료 감사합니다. 개발서버에 허드슨 깔아놓았는데 보안쪽은 당장 적용해봐야겠는데요.

  2. 조대협  댓글주소 수정/삭제 댓글쓰기 2008.11.11 09:16

    웹서버를 앞에 놓고 AJP로 허드슨 연결한후
    웹서버에서 HTTP BASIC AUTH나 SSL을 이용해서 보안 처리한다면 크게 문제 없지 않을까요? :)

hudson download

java 2008. 11. 10. 22:21

최신버전에 대한 permalink 가 있군요.
http://hudson.gotdns.com/latest/hudson.war 
현재 1.260 버전이 최신입니다.


wget으로 받으려했는데, https로 포워딩되는군요. 바뀌 주소에 --no-check-certificate 옵션을 주어서 받았습니다.

[hudson@169s /home/hudson]# ls -altr
합계 20
-rw-r--r--    1 hudson   hudson        411 11월 10 22:03 .bashrc
-rw-r--r--    1 hudson   hudson        250 11월 10 22:03 .bash_profile
-rw-r--r--    1 hudson   hudson         25 11월 10 22:03 .bash_logout
drwxr-xr-x   10 root     root         4096 11월 10 22:03 ../
drwx------    2 hudson   hudson       4096 11월 10 22:03 ./
[hudson@169s /home/hudson]# wget http://hudson.gotdns.com/latest/hudson.war
--22:05:57--  http://hudson.gotdns.com/latest/hudson.war
           => `hudson.war'
Resolving hudson.gotdns.com... 192.18.49.133
Connecting to hudson.gotdns.com|192.18.49.133|:80... connected.
HTTP 요청을 보냅니다, 서버로부터의 응답을 기다림...302 Found
장소: https://hudson.dev.java.net/files/documents/2402/116126/hudson.war [following]
--22:05:59--  https://hudson.dev.java.net/files/documents/2402/116126/hudson.war
           => `hudson.war'
Resolving hudson.dev.java.net... 204.16.104.198
Connecting to hudson.dev.java.net|204.16.104.198|:443... connected.
ERROR: Certificate verification error for hudson.dev.java.net: unable to get local
issuer certificate
To connect to hudson.dev.java.net insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
[hudson@169s /home/hudson]# wget --no-check-certificate  https://hudson.dev.java.net/files/documents/2402/116126/hudson.war
--22:07:28--  https://hudson.dev.java.net/files/documents/2402/116126/hudson.war
           => `hudson.war'
Resolving hudson.dev.java.net... 204.16.104.198
Connecting to hudson.dev.java.net|204.16.104.198|:443... connected.
WARNING: Certificate verification error for hudson.dev.java.net: unable to get local
issuer certificate
HTTP 요청을 보냅니다, 서버로부터의 응답을 기다림...200 OK
길이:   20,804,156 (20M) [text/plain]
[========================================>] 20,804,156   790.53K/s    ETA 00:00
22:08:08 (724.78 KB/s) - `hudson.war' saved [20804156/20804156]


실행은 간단히 됩니다.
java -jar hudson.war


[hudson@169s /home/hudson]# java -jar hudson.war
[Winstone 2008/11/10 22:13:48] - Beginning extraction from war file
[Winstone 2008/11/10 22:13:55] - No webapp classes folder found - /home/hudson/.hudson/war/WEB-INF/classes
hudson home directory: /home/hudson/.hudson
2008. 11. 10 오후 10:13:59 hudson.model.Hudson load
정보: Took 219 ms to load
2008. 11. 10 오후 10:14:00 hudson.TcpSlaveAgentListener <init>
정보: JNLP slave agent listener started on TCP port 48801
2008. 11. 10 오후 10:14:02 org.springframework.context.support.AbstractApplicationContext prepareRefresh
정보: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@1a9d1b: display name [Root WebApplicationContext]; startup date [Mon Nov 10 22:14:02 KST 2008]; root of context hierarchy
2008. 11. 10 오후 10:14:02 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
정보: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@1a9d1b]: org.springframework.beans.factory.support.DefaultListableBeanFactory@146e381
2008. 11. 10 오후 10:14:02 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
정보: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@146e381: defining beans [filter,legacy]; root of factory hierarchy
[Winstone 2008/11/10 22:14:02] - HTTP Listener started: port=8080
[Winstone 2008/11/10 22:14:02] - AJP13 Listener started: port=8009
[Winstone 2008/11/10 22:14:02] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled

결과는 다음과 같이 볼 수 있습니다.


job 을 죠브라고 번역해 놓았네요. 구글 번역기 짓인가요? ^^; 리포팅해야할 듯 합니다. 일본 개발자인 Kohsuke님에게 보내면 되겠지요.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 찬욱  댓글주소 수정/삭제 댓글쓰기 2008.11.10 23:36

    재밌는 이름이네요, 죠브^^.

  2. HannaKim  댓글주소 수정/삭제 댓글쓰기 2008.11.11 00:37 신고

    김성훈입니다. 현재 Hudson의 한글 담당으로 최근에 일하기 시작했습니다. 지금 "죠브"를 포함하여 이상한 표현들을 수정하고 있습니다. 의견있으시면 hunkim@gmail.com 으로 연락주세요.

    • 케누 kenu허광남  댓글주소 수정/삭제 2008.11.11 19:49 신고

      에이콘 블로그에서 뵈었는데, 여기까지 왕림하셨군요. 반갑습니다. 그리고 허드슨 한글화하신다니 부지런하십니다.
      저도 접한지 얼마 되지 않아서 자주 사용하면서 발견하면 알려드리겠습니다.
      행복하세요. ^^

프로젝트 모니터링이라고 제목을 정한 이유는 Continuous Integration 은 평소 잘 하라는 의미입니다. 빅뱅통합이라고 하는 프로젝트 오픈 직전의 코드 통합은 전장을 방불케합니다. 평소에 만들어지는 코드에 대한 건강진단은 프로젝트가 산으로 가는 것을 막아줍니다. 그리고 버그가 숨어있을 여지도 줄여줍니다.

이번 세미나는 hudson을 중심으로 프로젝트의 건강상태를 모니터링할 수 있는 방법에 대해서 공유하려고 합니다.

소스 코드 공유
 - SVN,CVS
 - 저장소의 무결성
빌드서버
 - only for application source codes
Hudson
 - Continuous Integration Tools
 - Build Automation
 - Plugins
Project Report
 - JUnit
 - FindBugs
 - Checkstyle
 - PMD


강사: 허광남 okjsp운영자

장소: 아트레온 토즈 (신촌역 4번출구 아트레온극장 14층)
약도: http://www.toz.co.kr/v2/01about/pop_map_art.gif

일시: 2008/11/15 토 오전 10:00~12:00

회비: 20,000원 (당일 접수, 영수증 가능)

인원: 선착순 25명

 

메일로 신청받습니다.

kenu 골뱅 okjsp.pe.kr

 

이름:

닉네임:

이메일:

휴대폰:

 

본 강의는 실습강의가 아닙니다.

 

Posted by 케누 kenu허광남

댓글을 달아 주세요

hudson okjspsite 적용

java 2008. 9. 1. 10:14
사용자 삽입 이미지

처음 쓰는 툴이라 쉽지 않군요.
https://hudson.dev.java.net 에서 구할 수 있습니다.

일단 cvs 에서 소스 가져오는 정도로 셋팅을 끝냈습니다.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. iolo  댓글주소 수정/삭제 댓글쓰기 2008.09.01 17:42

    허드슨 쓰시는 군요 @..@
    저희 팀은 올 아파치~ maven, archiva, continuum

  2. herlock  댓글주소 수정/삭제 댓글쓰기 2008.09.02 13:47

    저도 회사에서 Hudson을 사용하고 있습니다
    매우 간단하고 편리한 툴인것 같습니다
    테스팅 툴과 연동도 편한것 같습니다.. 후에 나오는 차트도 보기 편하고 ....
    junit svn hudson ant 사용중입니다