새작업을 선택하면 다음과 같은 화면이 나온다.


1. 작업명 입력 (Bizuma Components) 
- 이미 등록되어 있는 작업과 같은 설정을 사용할 경우 기존 작업 복사를 선택한다.

2. Build a maven 2/3 project 선택 후 OK




작업 환경 설정

1. Svn을 사용할 경우 Source Code Management 섹션에서 Subversion을 선택



- Repository URL : svn 경로이다. (http://192.168.10.xxx/svn/bizuma/trunk/BizumaComponents
--Maven의 모듈 개념을 사용해서 그룹을 지정할 경우 BizumaComponents 의 루트에 pom.xml이 등록되어 있어야 한다.

--예를 들어 BizumaComponents에 BizumaEntity 와 BizumaProcess의 모듈이 등록외어 있다면 BizumaCompoents의 pom.xml에 <module> 로소 위 두개의 프로젝트가 등록되어 있다면 모듈에 선언한 순으로 허드슨 빌드 순서가 된다.

-- 허드슨 Maven 빌드시에 BizumaComponents에 pom.xml이 존재 하지 않느다면 빌드가 실패하게 된다. 

-- 자세한 사항은 Maven프로젝트 생성시 module개념을 알아야한다.
 

- Local module directory(optional) : 허드슨이 빌드시에 Check out 받을 로컬 저장경로 명이다. 해당 저장경로는 기입 하지 않아도 되지만 SVN 루트경로(지금은 BizumaComponents)로 지정해서 명확하게 해주는것을 추천하고 싶다.


 2. Build triggers 선택

- Cron Expression을 사용한 빌드를 할 경우 Build periodically를 선택.


- Schedule 입력란에 00 01 * * * 이라고 입력하면 매일 새벽 한시에 해당 컴포넌트를 빌드 하게 될 것이다.

- Cron Expression은 다른 자료를 참고 하도록 하자.

3. Build 섹션


- Root POM : pom.xml은 그냥 둔다. 만약 BizumaComponents에 pom,xml이 존재 하지 않는다면 허드슨 창에서 에러박스가 나게 된다.

- Goals and opeitons : clean deploy (메이븐 GOAL 등록)

4. Build Settings

- E-mail Notification : 해당사항을 체크 하고 Recipients를 입력하면 입력된 이매일로 매일을 전송하게 된다. (이매일 구분은 공백으로 한다.)



5. Post-build Actions


- 말그대로 BizumaConponents를 빌두 후에 할 작업을 등록하는 곳이다.

- Build other projects를 선택후 프로젝트를 입력하면 BizumaComponents를 빌드 후에 입력한 프로젝트 빌드를 수행한다.

블로그 이미지

비추마

,

현재 자바 버전 1.5를 사용하는 관계로 허드슨 1.398을 설치 하게 되었다.

사용하는 OS로는 Ubuntu



1. 설치

- http://hudson-ci.org/downloads/war/ 에서 사용하고자 하는 war를 다운로드 받는다.

- jdk 버전에 맞는 hudson을 선택한다.

- 다운을 완료 하였다면 특정경로에 war를 복사한다.(/usr/bizuma/hudson-1.398)

- 난 개인적으로 설치하고자 하는 애플리케이션의 버전까지 명시한다.

2. 구동

- 해당 디렉토리에서 다음의 명령어로 실행한다.

 java -DHUDSON_HOME=/home/flower/hudson -jar ./hudson1.398.war
 --httpPort=8999 &

3. 실행

- http://localhost:8999


블로그 이미지

비추마

,
- 최신 버전(현재 2.1.2)은 자바 1.6이 설치된 시스템에서 구동되는 것으로 확인된다.

1. 설치

우분투 서버에 접속

sudo sh -c "echo 'deb http://hudson-ci.org/debian binary/'> /etc/apt/sources.list.d/hudson.list"

sudo apt-get update

sudo apt-get install hudson

2. 설정

/etc/default/hudson 파일을 읽어 보자.

기본 설정값들이 설정되어 있고

- 설치 후  포트 변경

HTTP_PORT=8080 이라고 써있는 부분의 포트를 변경한다.

- 사용자 설정

HUDSON_USER=hudson 이라고 기본 설정이 되어 있는데
사용할 계정으로 벼경한다.


3. 실행

http://localhost:8080/hudson

---------------------------------------------------------------------------------

설치는 누구나 할 수 있다. 왜 사용하고 어떻게 사용하는지가 더 중요하다.

CI툴로서 Continuum을 사용했었지만 사용함의 불편함에 따라 허드슨을 선택하고 실행하려

하는 참이다.



블로그 이미지

비추마

,

Google Svn 사용하기

System 2011. 11. 20. 16:33
참조  http://code.google.com/p/support/wiki/GettingStarted#Working_with_your_Project

개인적인 SVN 서버를 사용하면 좋겠지만 현실적으로 힘들 경우가 많다.

하지만 Google에서는 무료 Svn 서버를 Hosting해주고 있다.

http://code.google.com/intl/ko/

위의 사이트를 들어 가서 프로젝트 호스팅을 선택한다.

프로젝트 호스팅 사이트에 들어가면 오픈소스 프로젝트를 검색합니다. 를 선택 한 후

Sign in to create a Project를 선택한다. 로그인 후 Create a New Project를 선택.

Project name (필수)
Project summary (필수)
Description (필수)
Version control System (필수 - Subversion)
Source Code licence (필수)
Project label(s) (옵션)

위의 사항을 기제 후 Create Project를 선택한다.

위의 사항을 모두 완료하면 SVN 저장소가 하나 생성됨을 확인 할 수 있다.

기본적으로 생성되는 URL은 http://<Project-Name>.googlecode.com

위의 사이트로 접속 하면 관리 사이트가 나오고 환경 설정을 할 수 있다.



블로그 이미지

비추마

,

 

참고 URL : http://tomcat.apache.org/tomcat-6.0-doc/config/index.html

CATLINA_HOME :  /usr/local/tomcat-6.0.29 라고 가정하고 진행.

1. server.xml 설정

vi $CATALINA_HOME/conf/server.xml

GlobalNamingResources 설정에 우리가 사용할 Resource 를 설정한다.

Resource 설정

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
                 name="jdbc/BIZUMA_DS" username="bizuma" password="password"
                 url="jdbc:mysql://localhost:3306/bizumadb
                 type="javax.sql.DataSource" />
  

context 설정

 <Host name="localhost" appBase="webapps" unpackWARs="true"
          autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"
          <Context docBase="$CATALINA_HOME/webapps/bizuma" path="/bizuma" reloadable="true" />     
</HOST>



context 설정에서 appBase설정에 따라 docBase를 설정하고 unpackWARS 를 true로 설정을 했으니 bizuma.war 파일이 webapps/bizuma.war 로 배포가 될 것이고 webapps/bizuma 폴더에 압축이 풀릴것이다. context 파일을 특별히 설정할 필요는 없다. webapps/bizuma.war 가 존재 한다면 자동으로 contxt path 는 bizuma로 잡을것이다.

2. context.xml설정

vi $CATALINA_HOME/webapps/conf/context.xml
 <Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <ResourceLink global="jdbc/BIZUMA_DS" name="jdbc/BIZUMA_DS" type="javax.sql.DataSource"/>
</Context>

3. bizuma.war 의 web.xml 파일의 resource-ref 설정

 <resource-ref>
    <description>Nexfa Mysql Datasource</description>
    <res-ref-name>jdbc/NEXFA_DS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>





블로그 이미지

비추마

,
GC Viewer 다운로드 : http://www.tagtraum.com/gcviewer-download.html

다운받은 zip파일을 압축해제

java -jar gcviwer-1.2x.jar 실행.

분석할 로그 파일을 오픈한다.

GC 로그 만들기

Application을 띄울시에 java option으로 다음을 지정해준다.

JAVA_OPTS="-verbosegc -XX:+PrintGCDetails -Xloggc:/home/flower/logs/apigc.log "

GC가 일어날때 /home/flower/logs/apigc.log  에 기록되어진다.


블로그 이미지

비추마

,

필요사항

2, 모두 설치를 하였으면 에디터를 실행 해보자.

파일 - > 스크립트 작성 마법사


* 프로그램 배포자 : 플라워팀
* 프로그램 웹사이트 : http://www,flowerteam.kr/console

* 인스톨 경로를 고정 하려면 체크박스 해체.
* 사용할 약관 경로 설정
** 처음에 기본적으로 나오는 폴더가 있는데 그 폴더를 선택하고 X
**트리 아이콘을 클릭하면 EditDirectory 창이 나오고 설치할 디렉토리의 경로를 잡아준다
* 프로그램 시작 메뉴 : Flowerteam/blooma

* 위의 방식대로 했다면 nsi 파일이 생성된다.
* .nsi 파일은 NSIS 에서 제공하는 스크립트로 작성되어 있다.
* 기본 설치 파일을 컴파일 하면 exe 파일이 생성된다.

* 스크립트 수정
- 삭제 부분을 모두 지우고
  RMDir /r "$INSTDIR"
  RMDir /r "$SMPROGRAMS\Flowerteam"
  DELETE $DESKTOP\blooma.lnk
로 수정.

- 완료가 되었으면 NSIS - > 스크립트 컴파일
- BloomaSetup.exe 파일이 생성된다.

실행.
블로그 이미지

비추마

,

svn dump and load

System 2011. 3. 1. 23:49
SVN 저장소 백업 및 복구는 매우 중요하다.

예를 들어 현재 192.168.10.xxx 서버를 사용하고 있는데 서버가 고장이 났거나 특수 사정으로 인하여 서버를 바꿔야 한다 - >  192.168.10.aaa 로 서버가 바뀌었다고 가정.

물론 개발자들이 가지고 있는 소스를 다시 aaa 서버로 이관 시키면 된다고 생각 할 수 있겠지만 그것보다는 xxx 서버의 저장소 정보를 주기적으로 백업하여 관리하다가 aaa서버로 이관 시키고 개발자들은 싱크를 맞추는 것이 좋다.

저장소 백업: svnadmin dump {저장소 경로} > {파일명}
- 리비전 정보까지 모두 백업 된다.

저장소 load : svnadmin load {저장소 경로} < {파일명}

블로그 이미지

비추마

,

제품에 대한 릴리즈 정책은 중요하다.
우리는 SVN으로 형상관리를 하고 있으며 trunk/branches/tags 로 관리되어 지고 있다.
trunk는 현재의 Main Stream으로 진행중인 개발코드가 관리 되어지며 tags에는 릴리즈된 버전, branches에는 현재 릴리즈된 버전의 패치 버전을 관리 하게 된다.

개발자들은 trunk 로 작업을 하게 되고 릴리즈된 버전의 버그나 오류가 발견됐을 시의 패치를 할 경우 tags에 있는 릴리즈 버전을 branches로 옮겨서 해당 버그를 패치 하기 위해 branches 를 체크아웃 받아서 작업을 수행하게 된다.

패치가 완료가 되면 패치버전을 추가 시켜서 릴리즈를 한다.
지금 까지가 현재 우리가 적용하고 있는 정책이다.

현재 개발 버전 : 1.0.0-SNAPSHOT
제품 릴리즈 버전 : 1.0.0
즉 현재 개발 버전에 SNAPSHOT을 빼고 릴리즈.
패치가 필요할 경우  : 1.0.0.0 - > tags에 릴리즈 된 것을 branches 로 옮긴다

제품 릴리즈에 적용하고 있는 기술을 maven-release-plugin을 사용하고있다.
제품에 대한 버전 변경관 배포를 자동으로 해주는 maven 플러그인이다.

 maven-release-plugin을 적용하기 위해 pom.xml에 다음을 추가해준다.

<build>
  <plugins>
    <plugin>
       <artifactId>maven-release-plugin</artifactId>
       <version>2.0-beta-9</version>
       <configuration>
         <tagBase>http://flowerteam.dev/svn/flowerteam/tags</tagBase>
           <autoVersionSubmodules>true</autoVersionSubmodules>
           <goals>deploy</goals>
       </configuration>
     </plugin>
  </plugins>
</build>


현재 Main Stream을 tags로 옮기기.

새로운 워크스패이스를 만들어서  trunk 에 현재 릴리즈 할것을 모두 체크아웃 받자.
> svn co --username nextree  http://localhost/svn/nextree /trunk

trunk > mvn release:prepare
- > release버전, tags 라벨, 다음 개발버전(SNAPSHOT)지정.

위의 작업이 완료되면.
pom.xml에 추가되어 있는 모듈들이 trunk하위에는 다음 개발버전으로 변경되어 있고 tags하위에는 추가한 라벨 하위에 release버전으로 추가되어있다.

prepare 에서 실패를 하였을 경우
> mvn release:rollback

prepare가 성공을 하였다면
mvn release:perform
perform을 실행하면 release된 버전들은 개발 아티팩토리에 deploy 한다.

이제 개발자들은 새로운 SNAPSHOT으로 개발을 해야 하므로 버전 업된 SNAPSHOT들을 아티팩토리에 배포하여준다.
블로그 이미지

비추마

,

Tomcat 을 실행 후 모니터링 하는 도구로서 java 에서 제공해주는 jconsole, visualvm이 있다.

둘 모두 구동하는 방식은 똑 같으며 visualvm 이 더 많은 프로파일 기능을 제공한다.

위의 둘을 사용하기 위해서는 서버를 실행 시킬시에 다음의 옵션을 추가한다.

-- Remote 로 접속해서 사용할 경우

-Dcom.sun.management.jmxremote     // jmxremote 를 사용하겠다는 옵셥
-Dcom.sun.management.jmxremote.port=8999    // jmxremote 접속시에 사용할 포트
-Dcom.sun.management.jmxremote.ssl=false    // ssl 사용여부
-Dcom.sun.management.jmxremote.authenticate=false  // 인증사용여부

위의 옵셕을 주고 서버를 실행시키면 jconsole. visualvm 에서 모니터링을 할 수 있다.

jconsole, visualvm 사용 방법은 지금 포스팅과 상관이 없으니 생량.

위와 같은 옵션만 주게 되면 한가지 문제점에 봉착하게 된다.

서버가 우리쪽에 없고 방확벽(firewall) 을 따로 관리해야 하는 곳에 있다면 문제가 발생한다.

문제점이라 하면...... 저 8999 포트로 접속이 안되는것. 그럼 8999포트를 열면되지 라고 생각 할 수 있겠지만 문제가 그리 간단하면 내가 그리 고생하지는 않았을 것이다.

찾아본 문서에 의하면 jmx 자체가 방확벽이 걸릴경우에는 저 8999로 선언한 포트를 사용하지 않고 다른 포트를 만들어 버린다는 것. 내부적으로 어떻게 돌아가는지는 나도 아직 파악하지는 못한상태..

그럼 어떻게 해야 할까.. 포트를 고정시켜서 사용해야 하는데....

Tomcat 문서를 열심히 뒤저본 결과(처음에는 Tomcat 문서를 찾지 않았다. 괜히 엄한곳만 검색해서 시간만 잡아먹었다 ㅜ) 방법은 있었다.

그 방법이라 함은 포트를 고정시키는 방법

차례대로 해보자.

1. Tomcat 의 server.xml 에 다음의 리스너를 추가하자.

-  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"     rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" useLocalPorts="false"/>

2. $CATALINA_HOME/lib 에 catalina-jmx-remote.jar 복사

- 위의 jar파일은 톰캣에 기본적으로 들어 있는 파일이 아니다.


3. 서버 띄울시에 옵션 추가

- 사실 옵션을 추가하는 방식은 시스템 마다 다를것이며 사용자마다 다를것이다.

- 설정방법

CATALINA_OPTS
Dcom.sun.management.jmxremote
Dcom.sun.management.jmxremote.ssl=false
Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password
Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access
export CATALINA_OPTS

4. jmxremote.password, jmxremote.access 파일을 생성

- 위에서 인증파일로 두 파일을 사용하겠다고 하니 생성을 하고 세팅을 해줘야 겠다.
- jmxremote.password  --> test   test
- jmxremote.access  --> test   readonly (혹은 readwrite)

5. 톰캣 실행

6. jconsole , visualvm 에서 다음과 같이 URL로 접속한다.

service:jmx:rmi://<hostname>:10002/jndi/rmi://<hostname>:10001/jmxrmi

username , password 입력

7. 모니터링 하세요


블로그 이미지

비추마

,

http://continuum.apache.org/download.html 에서 최신버전 다운로드

1. 자신의 우분투 서버에 압축을 푼다

$ gunzip apache-continuum-1.3.5-bin.tar.gz
$ tar -xvf apache-continuum-1.3.5-bin.tar

2. $CONTINUUM_HOME/conf/jetty.xml 수정

continuum 에서 제공하는 DB 를 사용한다고 가정.

mail 설정(google 매일 서버 사용)

....
....
 <!-- continuum configuration -->
  <!-- START SNIPPET: mail -->
  <New id="validation_mail" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>mail/Session</Arg>
    <Arg>
      <New class="org.mortbay.naming.factories.MailSessionReference">
        <Set name="user">bbanggyu@gmail.com</Set>
        <Set name="password">password</Set>
        <Set name="properties">
          <New class="java.util.Properties">
            <Put name="mail.smtp.host">smtp.gmail.com</Put>
            <Put name="mail.smtp.port">587</Put>
            <Put name="mail.smtp.auth">true</Put>
            <Put name="mail.smtp.starttls.enable">true</Put>
          </New>
        </Set>
      </New>
    </Arg>
  </New>
...
...

port 설정
 <Call name="addConnector">
      <Arg>
          <New class="org.mortbay.jetty.nio.SelectChannelConnector">
            <Set name="host"><SystemProperty name="jetty.host" /></Set>
            <Set name="port"><SystemProperty name="jetty.port"  default="8099"/></Set>
            <Set name="maxIdleTime">30000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
            <Set name="lowResourcesConnections">5000</Set>
            <Set name="lowResourcesMaxIdleTime">5000</Set>
          </New>
      </Arg>




3. Continuum 실행
$ $CONTINUUM_HOME/bin/continuum console

4. 서버 접속
http://localhost(설치주소):8099/continuum

다음과 같이 나오면 일단 설치는 완성된 것이다.




블로그 이미지

비추마

,

Eclipse 에서 svn Client

System 2009. 4. 2. 11:24
1. 먼저 cilipse 클라이언트 플러그인을 설치하자

Help -> Software Updates

addSide 버튼을 클릭하여
http://subclipse.tigris.org/update_1.4.x 추가

install 버튼 클릭

2. svn Repositories 창을 띄우자

window -> Show View -> SVN Repositories

3. svn 주소를 입력

SVN Repositories 에서 마우스를 우클릭하여

new -> Repository Location

url: svn://localhost/svnData

4. shareProject

프로젝트를 선택하여 team-> shareProject 선택

블로그 이미지

비추마

,

svn 서버

System 2009. 4. 2. 11:05
1. 먼저 svn 서버를 다운 받는다. (알아서 받으시길)
 
2. 설치
   = > 콘솔창에 svnadmin 엔터
         "사용법은 'svnadmion help" 를 통해 볼수 있습니다." 라고 나오면 일단 설치는 되었음

3. 서버 디렉토리 생성

자신이 서버로 지정하고자 하는 폴더를 생성해 준다.
D:\repositories

4. svn 서버 디렉토리 설정

svnadmin create --fs-type fsfs D:\repositories\svnData

위의 글을 써주면 폴더하나가 생성되고

폴더의 구조는
svnData 하위 폴더로 conf, dav, db, hooks, locks 가 생성된다.

5. conf 폴더 밑에 있는 svnserve.conf 설정

"#" 한개로 시작하는 항목중에 anon-access = none, auth-access=write,
password-db = password, relam = svnData(생성한 폴더명)

6. password 설정

자신의 ID : 자신의 비밀번호

7. 서버 데몬 구동

svserve -d -r D:\repositories

이제 설정은 얼추 끝났으니 eclipse 에서 내가 만든 서버를 사용해 보자


 
블로그 이미지

비추마

,