2013년 4월 11일

Subversion 과 Ant 기반 개발서버 구축하기

여러사람이 함께 개발을 하게되면 최종 소스를 유지하는 것이 쉬운일이 아니다. Subversion 과 같은 형상관리 솔루션을 사용하더라도 문제는 해결되지 않는다. 이런 문제에 대한 해결방법으로 일부 개발자들은 CI 와 같은 빌드 서버의 필요성을 이야기한다.

이글에서는 간단하게 Ant 를 사용하여 서버에서 Subversion 으로 부터 최신 소스를 가져오는 방법을 설명한다. 비록 빌드서버와 같은 완전한 자동화 솔루션은 아니지만 손쉽게 작은 시간 투자로 최종 소스를 유지하는 좋은 방법이 아닌가 생각한다.

항상 개발서버는 개발자들이 직접 소스를 올리는 것이 아니라 개발 서벗에서 직접 subversion 에서 소스를 가져와 배포하고, 테스트가 완료되면 최종 결과를 운영에 반영하는 것이다.

STEP 1

가장 먼저 http://ant.apache.org/ 에서 최신 Ant 파일을 다운로드한다.
설치는 설치를 원하는 위치에 간단하게 압푹을 푼는 것으로 충분하며
편의성을 고려하여 계정의 .bash_profile 을 수정한다.

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 가 설치되었는가를 확인한다.
. .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 ) 

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  task.
E.g. like this:
  
(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 
for info how to get JavaHL for your operating system.

설치는 다운로드한 압축파일에 포함된 readme.txt 에 설명된 것 처럼 jar 파일들을 ${ANMT_HOME}/lib 경로에 복사하면 된다.


STEP 3

이제 마지막으로 subversion 에서 소스를 가져온는 build.xml 파일을 만들어 보자.
먼저 local.properties 파일을 만들어 svn 접속 정보 및 URL 정보를 저장한다.

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 의 경우 아주 긴 시간이 소요된다.



  
  

  
  
    
      
    
  

  
  

  
    
    
    
    
  

  
    
      
      
    
  
  
    
      
        
        
      
    
  




build.xml 파일의 내용은 형상관리에서 원하는 소스들을 원하는 위치에 checkout 하는 것과 특정 자원들을 제외하고 update 하도록 정의하였다. 주의 할것은 build.xml 파일에서 svn 테그를 사용할때는 반듯이 svnkit="true" 속성을 지정하여야 한다. 만일 svnkit 속성을 지정하지 않으면


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
오류가 발생한다.

댓글 없음:

댓글 쓰기