오늘은 제가 만든 "핫소스"라는 Tool을 소개 해드리고자 합니다.
저는 업무상 은행/공공기관등의 프로젝트 지원을 많이 다니곤 하는데요.
최근 들어 SVN을 사용하는 프로젝트를 많이 보게 됩니다.
그리고, SVN에 commit하면 WAS(tomcat, jeus, ... ) 에 배포가 되었으면 좋겠다 라고..
java의 경우는 컴파일도 되어야 하구요.
그렇게 시스템을 구성해달라는 요청을 받기도 합니다.
그래서 항상..Shell로 조잡하게 구성해서 제공해주곤 했는데....
제가 봐도 정리도 안되고....해서...
이번에 JAVA버젼으로 최대한 단순하게 만들어 보았습니다.
hooks폴더에 위에 첨부한 jar파일을 복사해서 넣습니다.
그리고..
#!/bin/sh
REPOS="$1"
TXN="$2"
MAPPING="TEST_WAS=/tmp/test/washome" # TEST_WAS프로젝트를 /tmp/test/washome 로 배포.
MAPPING="${MAPPING};TEST_WEB=/tmp/test/html" # TEST_WEB프로젝트를 /tmp/test/html 로 배포.
/home/nim/jdk1.7.0_25/bin/java -Dfile.encoding=UTF-8 -jar ${REPOS}/hooks/hotsrc.0.1.fat.jar ${REPOS} ${TXN} ${MAPPING} <svn-id> <svn-passwd>
위에서 java의 경로는 JDK(javac가 포함)의 java를 지정해주시길 바랍니다.
* 위 프로그램의 저작권은 제가 속해있는 회사인 "주식회사 널리소프트" 에 있습니다.
* 위 프로그램은 svnkit을 사용하였으나 편의를 위하여 하나의 jar로 묶었습니다.
* svnkit과 svnkit에서 사용되는 라이브러리의 저작권은 각 소프트웨어에 있습니다.
1. SVN을 생성한다.
당연한 이야기 부터 해보겠습니다.^^;
2. SVN설정..
2-1. svnserve.conf 설정.. (버전에 따라 약간 다를 수 있습니다.)
2-2. authz파일 수정 ( 사용자별, 그룹별 권한 설정을 합니다.)
2-3. passwd파일 수정 (사용자 id/password를 지정합니다. )
3. hook설정 (이제 핫소스 설치합니다. ---잘 보세요 눈 깜짝할사이에 지나갑니다..^^)
3-1. hotsrc.0.1.fat.jar 파일을 hooks 폴더로 복사.
3-2. pre-commit파일 수정 (svn이 commit되기 전에 수행되는 shell입니다. 이곳에서 핫소스를 수행합니다.)
4. eclipse에서 svn구성
4-1. dynamic web project구성 ( WAS용 프로젝트입니다.)
4-2. 프로젝트명을 입력하시구요.
4-3. NEXT누르십니다.^^
4-4. Content directory 설정입니다. ( 핫소스에서는 webContnet, web 두가지 경로를 인식합니다.)
4-5. 제가 좋아하는 web으로 하겠습니다.
4-6. 하는 길에 WEB프로젝트도 만들겠습니다.
4-7. WAS와 동일하게 (web or WebContent)
4-8. 역시 제가 좋아하는 web으로...
5. SVN에 올립니다. (team->share)
5-1. 방식은 SVN (여기서 SVN이 보이지 않으시면 subclipse나 subversive를 설치해주세요.^^)
5-2.create new repository location을 선택해서..
5-3 URL을 입력해 줍니다.
5-4. next..
5-5. 마침.
6. WEB프로젝트도 동일하게 Share합니다.
6-1. 이미 location이 등록되어 있으므로...선택하세요.^^ 나머지는 동일합니다.
7. commit을 한번 해줍니다.
8. OK누르시면 commit이 진행됩니다.
9. WEB에 HTML파일을 만들어보겠습니다.
10. 만든 HTML을 commit
11. OK누르시고 commit을 진행합니다.
12. WAS에 jsp도 만들어 보겠습니다.
13. 동일하게 commit..
14. 동일합니다..OK...
15. package를 등록하고 java도 만들어 보겠습니다.
16. test.test라는 패키지 생성.
17. 그 아래 class도 생성 합니다.
18. Test라는 Class로요..
19. build에는 필요하지만 서버에서는 필요 없을것 같은 jar는 lib_build라는 디렉토리에 만듭니다.
20. 가장 좋은 예인 servlet-api.jar파일이 있습니다.
22. 아까 만든 class와 함께 commit합니다.
23. 서버에 배포된 내용을 확인해 보겠습니다.^^