이글에서는 간단하게 Ant 를 사용하여 서버에서 Subversion 으로 부터 최신 소스를 가져오는 방법을 설명한다. 비록 빌드서버와 같은 완전한 자동화 솔루션은 아니지만 손쉽게 작은 시간 투자로 최종 소스를 유지하는 좋은 방법이 아닌가 생각한다.
항상 개발서버는 개발자들이 직접 소스를 올리는 것이 아니라 개발 서벗에서 직접 subversion 에서 소스를 가져와 배포하고, 테스트가 완료되면 최종 결과를 운영에 반영하는 것이다.
STEP 1
가장 먼저 http://ant.apache.org/ 에서 최신 Ant 파일을 다운로드한다.설치는 설치를 원하는 위치에 간단하게 압푹을 푼는 것으로 충분하며
편의성을 고려하여 계정의 .bash_profile 을 수정한다.
1 2 3 4 5 | export JAVA_HOME= /app/java export MAVEN_HOME= /app/maven export ANT_HOME= '/app/tools/apache-ant-1.9.0' export PATH=$JAVA_HOME /bin :$HADOOP_HOME /bin :$MAVEN_HOME /bin :$ANT_HOME /bin :$PATH |
다음과 같이 수정한 .bash_profile 을 적용하고 정상적으로 "ant -version" 명령으로 Ant 가 설치되었는가를 확인한다.
1 2 3 | . .bash_profile ant -version Apache Ant(TM) version 1.9.0 compiled on March 5 2013 |
STEP 2
ant 에서 subversion 작업을 지원하는 SvnAnt 를 다운로드한다. 문서에서는 최신 1.3.1 버전을 사용하였다. ( http://subclipse.tigris.org/svnant.html )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | SvnAnt ====== You can find latest version of svnant on http://subclipse.tigris.org Installation ============ Put the svnant.jar and svnClientAdapter.jar files to classpath of your ant build file. (Or directly to your ANT_HOME/lib directory.) If you plan to use JavaHL instead of commandline, put the svnjavahl.jar to the classpath too. (An of course put the appropriate native OS library on your PATH/LD_PATH too) In the build file, load the <svn> task. E.g. like this: <typedef classpathref="svnant.classpath" resource="org/tigris/subversion/svnant/svnantlib.xml"> (where svnant.jar lies in the "project.classpath") To provide access to the Subversion API, svnant uses svnClientAdapter on top of either the JavaHL native Subversion Java (JNI) bindings or Subverion's command line programs (which must be installed and in your PATH). See the subclipse's FAQ <http: faq.html="" get-javahl="" subclipse.tigris.org=""> for info how to get JavaHL for your operating system. </http:></typedef></svn> |
설치는 다운로드한 압축파일에 포함된 readme.txt 에 설명된 것 처럼 jar 파일들을 ${ANMT_HOME}/lib 경로에 복사하면 된다.
STEP 3
이제 마지막으로 subversion 에서 소스를 가져온는 build.xml 파일을 만들어 보자.
먼저 local.properties 파일을 만들어 svn 접속 정보 및 URL 정보를 저장한다.
1 2 3 4 5 6 7 8 9 10 | vi local .properties # ----------------------------------------------------------------------------- # build.properties # ----------------------------------------------------------------------------- svnant.version=1.3.1 lib. dir =lib svnant.latest.url= **** svnant.repository.user=**** svnant.repository. passwd =**** |
이번에는 build.xml 파일을 다음과 같이 만든다. 한가지 문제점은 checkout 과는 다르게 update 의 경우 아주 긴 시간이 소요된다.
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 32 33 34 35 36 37 38 | <!-- Sample build file used to retrieve svnant's sources --> < project basedir = "." default = "checkout" name = "svn-test" > <!-- all properties are in build.properties --> < property file = "build.properties" > <!-- path to the svnant libraries. Usually they will be located in ANT_HOME/lib --> < path id = "svnant.classpath" > < fileset dir = "${lib.dir}" > < include name = "**/*.jar" > </ include ></ fileset > </ path > <!-- load the svn task --> < typedef classpathref = "svnant.classpath" resource = "org/tigris/subversion/svnant/svnantlib.xml" > < target name = "clean" > < delete dir = "WebContent" > < delete dir = "src" > < mkdir dir = "WebContent" > < mkdir dir = "src" > </ mkdir ></ mkdir ></ delete ></ delete ></ target > < target name = "checkout" > < svn password = "${svnant.repository.passwd}" svnkit = "true" username = "${svnant.repository.user}" > < checkout destpath = "WebContent" revision = "HEAD" url = "${svnant.latest.url}/WebContent" > < checkout destpath = "src" revision = "HEAD" url = "${svnant.latest.url}/src" > </ checkout ></ checkout ></ svn > </ target > < target name = "update" > < svn password = "${svnant.repository.passwd}" svnkit = "true" username = "${svnant.repository.user}" > < update revision = "HEAD" > < fileset dir = "WebContent" excludes = "WEB-INF/log/*, **/startup-config.xml" > < fileset dir = "src" > </ fileset ></ fileset ></ update > </ svn > </ target > </ typedef ></ property ></ project > |
build.xml 파일의 내용은 형상관리에서 원하는 소스들을 원하는 위치에 checkout 하는 것과 특정 자원들을 제외하고 update 하도록 정의하였다. 주의 할것은 build.xml 파일에서 svn 테그를 사용할때는 반듯이 svnkit="true" 속성을 지정하여야 한다. 만일 svnkit 속성을 지정하지 않으면
1 2 3 4 5 6 7 8 9 10 11 12 | ant update Buildfile: /app/webapps/blitzz-ws/build .xml update: [svn] Deprecated attribute 'username' . This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead. [svn] Deprecated attribute 'password' . This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead. [svn] Missing 'javahl' dependencies on the classpath ! BUILD FAILED /app/webapps/blitzz-ws/build .xml:36: Cannot find javahl, svnkit nor command line svn client Total time : 0 seconds |
댓글 없음:
댓글 쓰기