�빫�� ����� ���

Posts tagged ‘svn’

SVN 커밋 후 자동 빌드 만들기

 

작년에 프로젝트(이하 projectx)를 수행하던 중에 작성했던 것들을 정리하여 공개합니다.

SI 프로젝트들이 늘 그렇듯이 쪼들리는 일정과 반복되는 요구사항 변경, 그리고 환경이 개판이지요. 그 전까지만 해도 몇년을 자동화된 툴을 사용하지 않고 ftp와 터미널을 사용하는 환경이었습니다. 개발툴이야 당연 eclipse였지만요. 그런데 projectx를 수행할 때는 제가 개발리더 역할을 맡았고, 서버 조정이나 환경등을 제가 설정해야 했습니다. 기회는 이때다 싶었죠. svn 설치, 설정을 하고 각 개발자들에게 사용법을 알려주었습니다. 그리고 마구 바뀌는 요구사항을 수용하기 위해 custom tag들을 만들었죠. svn 덕분에 소스 덮어치기 사고는 일어나지 않았지만, 하루에도 수십번을 빌드할 수 있는 상황은 바뀌지 않았습니다. 제가 cvs보다 svn을 좋아하는 이유는 svn이 event를 지원하는 것 때문이었는데, 그것을 이용해서 자동빌드/적용 환경을 꾸미게 되었습니다.

 

svn repository에서 source root를 보면 hooks 라는 디렉토리가 있습니다. 그 안에는 

 

[$SOURCE_ROOT/hooks ]$ ls
post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl
post-commit.tmpl post-nlock.tmpl pre-revprop-change.tmpl

 

라는 파일들이 있습니다. 이것들은 각 이벤트에 반응할 스크립트들의 템플릿인데요, 위의 파일에서 “.tmpl”을 빼서 저장하면 svnserve가 알아서 해당 스크립트를 실행합니다. 그 중 post-commit 스크립트는 커밋 이후에 실행되는 스크립트입니다. 저걸 수정하면 되지요.

 

[$SOURCE_ROOT/hooks ]$ vi post-commit
#!/bin/sh
/home/svn/sample_script_post_commit.sh

 

위와같이 post-commit 파일을 생성해줍니다. 그 다음에 /home/svn/sample_script_post_commit.sh를 만들면 됩니다. 스크립트 기능은 “목표 바이너리 삭제 -> svn export -> build -> 바이너리 copy” 면 충분합니다.

 

[$SOURCE_ROOT/hooks ]$ vi /home/svn/sample_script_post_commit.sh
#!/bin/sh
mkdir $APP_ROOT/WEB-INF/classes
svn export svn://$SOURCE_ROOT $APP_ROOT/$SOURCE_ROOT –force –username $USERNAME –password $USERPASSWORD
/home/svn/build.sh
date > /home/svn/backup_gos_dev/lastbackup.log

 

/home/svn/build.sh 는 ant를 이용한 빌드 스크립트입니다. 간단하죠.

#!/bin/sh
cd /home/svn
export JAVA_HOME=/usr/java5
ant

 

build.xml은 각자 프로젝트에 맞에 생성해주시면 됩니다.

무료 SVN repository hosting. XP-dev.com

 

개인 프로젝트를 진행할 때 막히는 것 중 하나가 source repository입니다.  대게 집에서 작업을 하면 유동 IP인 데다가 공유기까지 사용하면 집에서 CVS나 SVN 서버를 설치한다고 하더라도 회사 등에서 접근하기가 쉽지가 않죠.

국내에는 웹호스팅을 무료로 제공하는 곳은 있지만 CVS나 SVN을 제공하는 곳은 없었습니다.(또 모르죠. 지금은 있을지도..) 그러나 해외에서는 이미 많은 곳에서 서비스되고 있답니다. 전통적으로 sourceforge가 그 예입니다. 그렇지만 쉐어웨어 개발같이 상업적 목적이라면 소스포지는 어울리지 않습니다. 그래도 찾아보면 나오더군요.

작년부터 개인 프로젝트에 assembla를 사용하곤 했는데 정책이 바뀌어서 무료사용자는 반드시 오픈소스로 진행해야 한다고 메일이 오더라구요. 그래서 다른 곳을 찾다보니 한 곳 쓸만한 곳을 발견했습니다. xp-dev!

현재 1.5GB 용량과 프로젝트 관리 툴, 위키를 제공합니다. 제가 작년 가을 부터 사용했었는데 그 때는 위키가 한글을 지원하지 않아 쓸 수가 없었는데(운영진 측에 요청해보니 다음 릴리즈에 꼭 utf-8을 지원하겠다고 했었죠.) 이제는 사용할 수 있게 되었습니다. 1.5GB면 소스 저장소로는 남아도는 용량이고, 인터페이스도 단순 깔끔한게 맘에 꼭 들더군요. 현재 프로젝트 관리 툴로는 스토리(trac의 티켓과 같은 개념이더군요.), 버그트래킹, 위키, 블로그, 포럼등을 지원합니다.

 

업무는 설렁설렁 짤리지 않을 만큼만, 코딩에 푹 빠져 살아요~~!