관리 메뉴

IT.FARMER

Auto Build Batch File (자동빌드 배치파일) 본문

Web Server, WAS

Auto Build Batch File (자동빌드 배치파일)

아이티.파머 2014. 9. 11. 09:57
반응형

 

ServerBuild_Sample.bat
다운로드

개발 이후 인스톨파일(mis)파일을 만들기 위해

여러가지 해야할 작업들이 많다.

 

개발된 내용의 배포와 함께. 패키징 그 후에 다시한번 인스톨파일로 묶기까지...

이 내용을 개발을 하면서 준비하기엔 많은 시간이 걸린다.

 

이때문에 우린 CI 를 사용 하요 지속적인 어쩌구저쩌구를 통해 자동 빌드를 하기도 한다.

이예로 허드슨과 젠킨스를 많이 사용 한다.

 

이번엔 허드슨과 젠킨스를 사용하는 것이 아니라.

순수하게 Batch 파일과, SVN , MAVEN 만을 이용한다.

 

 

순서는 다음과 같다.

 

0. 톰켓 stop

1. svn 명령어를 실행하여 최신 파일을 체크아웃 받는다.

2. maven 명령어를 이용하여 빌드 실행.

3. 생성된 war 파일을 tomcat deploy 폴더에 복사.

4. war 파일을 이용하여 mis 파일 생성

5. 톰켓 start

 

* build batchFile

 

@echo off

:::::::::::::::::::::::::::::::::::::::
rem 변수 설정 시작
::::::::::::::::::::::::::::::::::::::: 

title Auto Build

set TEMP_BUILD_DIR=d:\AutoBuild\
set LOG_FILE=%TEMP_BUILD_DIR%%date%_LOG.txt

rem SVN 에 등록된 프로젝트 이름
set project_name=com.skan.kkk.xxxx.web



rem SVN 정보 설정
set svn_repository=https://xxx.xxxx.xx/svn/trunk/%project_name%
set svn_user=ansangkil
set svn_passowrd=password


rem Maven에서 빌드후 생성해주는 war 파일,  보통 xxxx-0.0.1-SNAPSHOT.war 로 생성됨
set to_gen_war=com.skan.kkk.xxxx.web-1.0.0-SNAPSHOT.war

rem 빌드후 생성된 war 파일을 복사할 대상 war 파일, 톰캣에서 바라보는 webapps 디렉토리
set target_webapp_dir=d:\webapps\xxxx\

rem 프로젝트의 컨텍스트 패스, / 면 ROOT 라고 적어주면 됨
set target_webapp_war_name=kkkxxxx

rem service 에 등록된 톰캣 서비스이름으로 바꿔주셈~
:: set tomcat_service_name=tomcat6

rem MIS 파일 준비 작업
set MIS_PROJECT_NAME=com.skan.kkkxxxx.installer
set SVN_MIS_PROJECT_REPOSITORY=https://xxx.xxxx.xx/svn/trunk/%MIS_PROJECT_NAME%


set SVN_COMMON_RP_PATH=https://xxx.xxxx.xx/svn/
:::::::::::::::::::::::::::::::::::::::
rem 변수 설정 끝
:::::::::::::::::::::::::::::::::::::::


rem 배포시작
rem 톰캣 정지

:: net stop %tomcat_service_name%
rem 기존 배포된 디렉토리 지우기
::rd /s /q %target_webapp_dir%%target_webapp_war_name%

rem 체크아웃 받을 디렉토리가 존재하지 않으면 맨듬
IF NOT EXIST %TEMP_BUILD_DIR% (
    mkdir %TEMP_BUILD_DIR%
)

cd %TEMP_BUILD_DIR%
set CUR_PATH=%cd%
@echo Current PATH %CUR_PATH%
@echo COMMON PACKAGE SVN FILE CHECK OUT

::::::::::::::::::::::::::::::::::::::::::::::: 
rem INSTALLER FILE check out / build
::::::::::::::::::::::::::::::::::::::::::::::: 

cd %TEMP_BUILD_DIR%
svn co https://xxx.xxxx.xx/svn/ --username %svn_user% --password %svn_passowrd%
svn co https://xxx.xxxx.xx/svn/ --username %svn_user% --password %svn_passowrd%
svn co https://xxx.xxxx.xx/svn/ --username %svn_user% --password %svn_passowrd%
svn co https://xxx.xxxx.xx/svn/--username %svn_user% --password %svn_passowrd%

@echo WEBAPPLICATION PACKAGE SVN FILE CHECK OUT

svn co %SVN_COMMON_RP_PATH%trunk/ --username %svn_user% --password %svn_passowrd%
svn co %SVN_COMMON_RP_PATH%trunk/ --username %svn_user% --password %svn_passowrd%
svn co %SVN_COMMON_RP_PATH%trunk/ --username %svn_user% --password %svn_passowrd%
svn co %SVN_COMMON_RP_PATH%trunk/ --username %svn_user% --password %svn_passowrd%
svn co %SVN_COMMON_RP_PATH%trunk --username %svn_user% --password %svn_passowrd%
svn co %SVN_COMMON_RP_PATH%trunk/ --username %svn_user% --password %svn_passowrd%

:::::::::::::::::::::::::::::::::::::::::::::::
rem INSTALLER FILE check out / build
::::::::::::::::::::::::::::::::::::::::::::::: 
@echo INSTALLER FILE SVN FILE CHECK OUT

cd %TEMP_BUILD_DIR%
svn co %SVN_MIS_PROJECT_REPOSITORY% --username %svn_user% --password %svn_passowrd%
cd %MIS_PROJECT_NAME%
start /wait cmd /c mvn clean package
set BUILD_RUN_FILE_PATH=%cd%\target\
set CUR_MIS_PATH=%cd%\target\com.xxxxx.xxxxx.installer-0.0.1-SNAPSHOT\server\servers
@echo current path %CUR_MIS_PATH%


:::::::::::::::::::::::::::::::::::::::::::::: 
rem  JAR RUN
:::::::::::::::::::::::::::::::::::::::::::::: 
@echo enter to kkk xxxx Information 
java -jar %BUILD_RUN_FILE_PATH%kkkinstaller.jar
copy XmlDomCreate.xml .\target\com.xxxxxx.xxxxxx.installer-0.0.1-SNAPSHOT\Language.wxl  /y

:::::::::::::::::::::::::::::::::::::::::::::::
rem WEB APPLICATION check out /  build
::::::::::::::::::::::::::::::::::::::::::::::: 
cd %TEMP_BUILD_DIR%
rem svn 에서 프로젝트를 CHECKOUT 받는다.
svn co %svn_repository% --username %svn_user% --password %svn_passowrd%

cd %project_name%
rem maven 으로 war 파일 생성될때까지 기다림
start /wait cmd /c mvn clean package
cd target
rem war 파일을 개발서버 톰캣 webapps 폴더로 복사
copy %to_gen_war% %CUR_MIS_PATH%\%target_webapp_war_name%.war /y

::::::::::::::::::::::::::::::::::::::::::::::: 
rem  MIS BUILD
rem 1. XML 빌드 전에 java Application 을 실행 하여 버전정보를 입력 받는다.
rem 2. 입력 받은 버전정보로 기존 wsx 파일을 읽어드려 입력받은 버전으로 교체 한다.
rem 3. 변경된 내용으로 xml을 새로 만든다.
rem 4. 이후 MSI 파일을 만들기 위한 명령어를 실행한다.
::::::::::::::::::::::::::::::::::::::::::::::: 



@echo MIS File Build
cd %CUR_MIS_PATH%
cd ../..
candle kkkxxxx.wxs >> %LOG_FILE%
light -cultures:ko-kr -ext WiXUIExtension -out kkkxxxx.msi kkkxxxx.wixobj -loc Language.wxl >> %LOG_FILE%
copy kkkxxxx.msi %TEMP_BUILD_DIR%\kkkxxxx.msi /y

::::::::::::::::::::::::::::::::::::::::::::::: 


::::::::::::::::::::::::::::::::::::::::::::::: 
IF EXIST %TEMP_BUILD_DIR%\kkkxxxx.msi (
 @echo kkkxxxx BUILD SUCCESS
 ) ELSE  (
 @echo kkkxxxx BUILD FAIL
)

PAUSE

rem 톰캣 시작
:: net start %tomcat_service_name%
cd \

 

 

배치파일의 출처는 다른 블로그의 것을 참조하였는데, 링크를 잊어버렸다.. -_-

반응형