1. Ant script 구성방법 및 샘플
Ant scirpt 작성시 다양한 방법이 있지만, 가장 기본적인 패턴은 빌드파일(xml)과 설정파일(properties)을 분리해서 관리하는 방법이다.
본 글에서는 기본적인 구성방법을 활용한 샘플 빌드파일 및 설정파일을 공유한다.
1.1 스크립트 target정리
- all : 해당 스크립트의 시작 target
- init : 이전에 작업해 놓은 디렉토리를 삭제하고, 기본적인 디렉토리를 생성하는 target
- compile : java 소스를 컴파일 하는 target
- makeResource : web / was 영역에 배포해야 하는 자원들을 복사 및 이동하는 target
web 환경에 deploy 해야 하는 정적자원(html, img, css, js등)
was 환경에 deploy 해야 하는 동적자원(properties, xml)
- makeZip : web / was 자원을 remote서버로 배포하기 위해 자원을 압축(zip)하는 target
- deploy2Server : remote 서버에 명령어(shell) 호출 및 File2File 전송하기 위한 target
1.2 스크립트 내용 정리
1.2.1 dev_openmind_build.properties
############################################################# ############## 1. Basic Info #################################### ############################################################# app.name = openmind base.dir = /work/ci/jenkins/workspace/dev_${app.name}_build // jenkins workspace job의 작업경로 src.java.dir = ${base.dir}/${app.name} ui.java.dir = ${base.dir}/ui openmind.webapp.dir = ${base.dir}/${app.name}/src/main/webapps openmind.resources.dir = ${base.dir}/${app.name}/src/main/resources openmind.conf.dir = ${base.dir}/${app.name}/src/main/conf build.class.dir = ${base.dir}/build/class build.web.dir = ${base.dir}/build/web // web 자원 zip 압축을 위한 경로 build.uisw.dir = ${base.dir}/build/uisw // uisw home 자원 zip압축을 위한 경로 build.was.dir = ${base.dir}/build/was // was 자원 zip 압축을 위한 경로 build.was.lib.dir = ${build.was.dir}/WEB-INF/lib build.was.classes.dir = ${build.was.dir}/WEB-INF/classes ############################################################# ############## 2. Compile #################################### ############################################################# openmind.biz.lib = ${base.dir} // jenkins job workspace에 checkout 받은 svn or git의 application lib 디렉토리 openmind.fw.lib = ${base.dir} // jenkins job workspace에 checkout 받은 svn or git의 application fw lib 디렉토리 java.encoding = utf-8 ############################################################# ############## 3. Remote Server ################################ ############################################################# systemcode.server.ip = 1xx.xxx.xxx.xxx systemcode.server.port = 22 systemcode.server.target = /temp/deploy // target서버의 임시 디렉토리 systemcode.app.server.id = app systemcode.app.server.password = xxxx systemcode.mw.server.id = mw systemcode.mw.server.password = xxxx |
1.2.2 dev_openmind_build.xml
<?xml version='1.0' encoding='utf-8'?> <project name='' default='all' basedir='.'> <property file='dev_openmind_build.properties'/> // 동일한 경로에 properties에 있을 경우 // jenkins에서 수행시 target goal을 all로 수행하면 depends가 순차적으로 먼저 수행됨 <target name='all' depends='init, compile, makeResource, makeZip, deploy2Server'/> <target name='init'> <echo> init start </echo> <delete dir='${build.web.dir}' guiet='true'/> <delete dir='${build.uisw.dir}' quiet='true'/> <delete dir='${build.was.dir}' quiet='true'/> <delete dir='${build.class.dir}' quiet='true'/> <make dir='${build.web.dir}' /> <make dir='${build.uisw.dir}' /> <make dir='${build.was.dir}' /> <make dir='${build.class.dir}' /> <echo> init end </echo> </target> <target name='compile' depends='init'> <echo> ui sw compile start </echo> <javac srcdir='${ui.java.dir}' destdir='${build.class.dir}' encoding='${java.encoding}' deprecation='true' debug='true'> <classpath> <fileset dir='${openmind.fw.lib}' /> </classpath> </javac> <echo> ui sw compile end </echo> <echo> biz compile start </echo> <javac srcdir='${src.java.dir}' destdir='${build.class.dir}' encoding='${java.encoding}' deprecation='true' debug='true'> <classpath> <fileset dir='${openmind.fw.lib}' /> <fileset dir='${openmind.biz.lib}' /> </classpath> </javac> <echo> biz compile end </echo> </target> <target name='makeResource' depends='compile'> <echo> make web resource start </echo> <move todir='${build.web.dir}' > <fileset dir='${ui.java.dir}/WebContent'> <exclude name='WEB-INF/**'/> <exclude name='index.jsp'/> </fileset> </move> <echo> make web resource end </echo> <echo> make uisw resource start </echo> <move todir='${build.uisw.dir}' > <fileset dir='${ui.java.dir}/resource/uisw_home'> </fileset> </move> <echo> make uisw resource end </echo> <echo> make was resource start </echo> <move todir='${build.was.dir}' > <fileset dir='${openmind.webapp.dir}'> <exclude name='*.html'/> </fileset> </move> <copy todir='${build.was.dir}' > <fileset dir='${ui.java.dir}/WebContent'> <include name='WEB-INF/uisw/**'/> </fileset> </copy> <move todir='${build.was.dir}/WEB-INF/classes' > <fileset dir='${openmind.resources.dir}/spring'> <exclude name='*.html'/> </fileset> </move> <copy todir='${build.was.dir}' overwrite='true' > <fileset dir='${openmind.conf.dir}/10.dev'> </fileset> </copy> <copy todir='${build.was.classes.dir}' overwrite='true' > <fileset dir='${build.class.dir}'> </fileset> </copy> <copy todir='${build.was.lib.dir}' overwrite='true' > <fileset dir='${openmind.biz.dir}/lib'/> <fileset dir='${openmind.fw.dir}/lib'/> </copy> <echo> make was resource end </echo> </target> <target name='makeZip' depends='makeResource'> <echo> makeZip web start </echo> <zip destfile='${build.web.dir}/web.zip' basedir='${build.web.dir}' /> <echo> makeZip web end </echo> <echo> makeZip uisw_home start </echo> <zip destfile='${build.uisw.dir}/uisw_home.zip' basedir='${build.uisw.dir}' /> <echo> makeZip uisw_home end </echo> <echo> makeZip was start </echo> <zip destfile='${build.was.dir}/was.zip' basedir='${build.was.dir}' /> <echo> makeZip was end </echo> </target> <target name='deploy2Server' depends='makeZip'> <tstamp> <format property='todayStamp' pattern='yyyyMMddHHmm'/> </tstamp> <echo> deploy2Server web ${todayStamp} </echo> <echo> deploy2Server web, was, uisw start </echo> <sshexec host='${systemcode.server.ip}' port='${systemcode.server.port}' username='${systemcode.app.server.id}' password='${systemcode.app.server.password}' command='mkdir -p ${systemcode.server.target}' timeout='10000' failonerror='false' trust='true'/> <scp file='${build.web.dir}/web.zip' todir='${systemcode.app.server.id}:${systemcode.app.server.password}@${systemcode.server.ip}:${systemcode.server.target}' port='${systemcode.server.port}' trust='true' /> <scp file='${build.uisw.dir}/uisw_home.zip' todir='${systemcode.app.server.id}:${systemcode.app.server.password}@${systemcode.server.ip}:${systemcode.server.target}' port='${systemcode.server.port}' trust='true' /> <scp file='${build.was.dir}/was.zip' todir='${systemcode.app.server.id}:${systemcode.app.server.password}@${systemcode.server.ip}:${systemcode.server.target}' port='${systemcode.server.port}' trust='true' /> <sshexec host='${systemcode.server.ip}' port='${systemcode.server.port}' username='${systemcode.app.server.id}' password='${systemcode.app.server.password}' command='sh /sw/ci/build_scirpt/dev_openmind_deploy.sh' timeout='10000' failonerror='false' trust='true'/> <echo> deploy2Server web, was, uisw end </echo> </target> </project> |
'IT > CICD' 카테고리의 다른 글
Ant 유용한 Tip-1 (0) | 2022.03.13 |
---|---|
maven 다운로드 및 설치 (0) | 2022.03.10 |
Ant 다운로드 및 설치 (0) | 2022.03.10 |
Jenkins plugin 세팅 (0) | 2022.03.10 |
Jenkins 다운로드 및 설치 (0) | 2022.03.10 |