빅토리 코딩
article thumbnail
Published 2023. 3. 24. 16:56
Jenkins (ant build) Open Source/jenkins
728x90
반응형
요즘 새로운 프로젝트에는 거의 쓰이진 않지만 유지보수 중인 프로젝트에 jenkins를 추가해달라는 요청이 있어해 주기로 했다.!

개요

dynamic web project 같은 경우에는 maven이나 gradle 처리 별도로 라이브러리가 저장되어 있는 repository를 사용하는 게 아니라 WEB-INF/lib에 라이브러를 넣고 web.xml 파일에 세부 설정을 해줘서 web을 사용하는 방식이다. 이 dynamic web project를 쉽게 컴파일하여 빌드해주는 것이 ant build이다. ant build는 build.xml파일에 어떻게 컴파일 및 빌드를 할지 설정한다.

사용할 프로젝트는 https://github.com/victory940209/testspringboot.git 안에 있는 testWebJava이다.

 

GitHub - victory940209/testspringboot

Contribute to victory940209/testspringboot development by creating an account on GitHub.

github.com

설정

- build.xml

<project name="testJavaWeb" default="compile" basedir=".">
	<description>test Java Web</description>

	<property name="build.home"    	value="/data1/javaWeb"/> <!-- 배포할 위치 -->
	<property name="src.home"      	value="${basedir}/src/main/java"/> <!-- 자바 파일 위치 -->
	<property name="resources.home"   value="${basedir}/src/main/resources"/> <!-- config xml등 resources-->
	<property name="web.home"     	value="${basedir}/src/main/web"/> <!-- 사용되는 static 파일들 -->
	<property name="webapp.home"     	value="${basedir}/src/main/webapp"/> <!-- 사용되는 static 파일들 -->
	<property name="weblib.home"     	value="${basedir}/src/main/webapp/WEB-INF/lib"/> <!-- library 파일들 -->

	<!-- path 저장(property 설정) -->
	<path id="compile.classpath">
		<fileset dir="${weblib.home}">
			<include name="**/*.jar"/>
		</fileset>
	</path>

	<!-- 기존 파일 위치 삭제 -->
	<target name="clean" description="Delete old build and dist directories">
		<delete dir="${build.home}/"/>
	</target>

	<!-- target name=claen 후에 하는 행위(스태틱한 파일, 라이브러리등 복사)-->
	<target name="prepare" depends="clean">

		<mkdir dir="${build.home}"/>
		<mkdir  dir="${build.home}/WEB-INF"/>
		<mkdir  dir="${build.home}/WEB-INF/classes"/>
		<mkdir  dir="${build.home}/WEB-INF/lib"/>


		<copy todir="${build.home}">
			<fileset dir="${web.home}"/>
		</copy>

		<copy todir="${build.home}">
			<fileset dir="${webapp.home}"/>
		</copy>

		<copy todir="${build.home}/WEB-INF/lib">
			<fileset dir="${weblib.home}">
				<include name="**/*.*"/>
			</fileset>
		</copy>

		<copy todir="${build.home}/WEB-INF/classes">
			<fileset dir="${resources.home}">
				<include name="**/*.*"/>
			</fileset>
		</copy>
	</target>

	<!-- target name=prepare 후에 하는 행위 compile을 한다. -->
	<target name="compile" depends="prepare" description="Compile Java sources">

		<!-- destdir = 배포위치, source = jdk 버전  target= jdk 버전-->
		<javac destdir="${build.home}/WEB-INF/classes" debug="yes" encoding="EUC-KR" source="1.8" target="1.8">
			<!-- java 폴더 위치 -->
			<src path ="${src.home}"/>
			<!-- 해당위치에 있는 lib를 이용하여(위에서 선언한 path) compile -->
			<classpath refid="compile.classpath"/>
		</javac>

	</target>

</project>

나는 같은 프로젝트 안에 이 build.xml을 형상관리에 올려서 해당 build.xml을 사용하였다.

- jenkins

Freesyle project로 새로운 빌드를 만든다. 소스 코드 관리에 해당 형상관리를 쓰면 된다.

 

add Build Steps에서 Invoke Ant를 선택 Targets는 build.xml에 있는 target이랑 동일하다. clean prepare compile 이렇게 써도 되고 depends에 하기 전 행위를 적어놨기 때문에 compile이라고 써도 된다.

Build File : default로 build.xml를 읽지만 다른 이름으로 썼을 때 해당 파일 이름을 적으면 된다.

Properties : sh 파일처럼 build.xml 에 $1 이런 식으로 써서 해당 변수를 사용할 때 쓰인다.

Java Options : ant build시 java에 주고 싶은 옵션을 설정하는 부분이다. 

하고 빌드 완성!

이제 ant build를 다운로드하여 패스를 잡아줘야 한다. https://downloads.apache.org/ant/binaries/ 해당 url에서 맞는 버전을 다운로드하고 jenkins관리 - Global Tool Configuration에서 설정을 해준다.

아까 만들 빌드 프로젝트에서 ant build를 사용하는 곳에 해당 버전을 사용한다고 선택해주면 된다.

빌드

이제 빌드를 눌러보자

난리 났다,,, depends 때문에 이런 거 같다 세 개 build.xml에 depends를 적었다면 compile 하나만 써주자,,,

이제 해당위치로 가보자

스태틱 파일 및 컴파일이 잘된 거 같다 이제 연결할 톰캣까지 연결해 보자!

먼저 해당 위치 톰캣 Context 설정을 해주고(참고 https://victory-coding.tistory.com/entry/tomcat-context-%EC%B6%94%EA%B0%80) jenkins 빌드 프로젝트에 톰캣 재기동 추가하면 된다.

빌드 정상적으로 끈났지만,,, 톰캣 기동이  실행되지 않았다... 젠킨스에 백그라운드로 명령어로 톰캣 기동을 하는데 빌드가 끈만 거로 인식해서 기동 중 끈기는 것 같다...,,,,

먼저 빌드에 매개변수를 추가하고 기동 명령어에 해당 명령어를 써놓는다.

BUILD_ID=dontKillMe /data1/apache-tomcat-9.0.41-testJavaweb/bin/startup.sh

 

매개변수명을 바꾸면 안 댄다. 이게 젠킨스에 설정중 하나인 거 같다.. 다시 시도해 보면 잘 기동 된 걸 확인할 수 있다.

728x90
반응형

'Open Source > jenkins' 카테고리의 다른 글

Jenkins Freestyle project 기타 설정  (0) 2023.03.24
Jenkins (maven build)  (0) 2023.03.21
Jenkins 설치 및 세팅  (0) 2023.03.20
profile

빅토리 코딩

@빅토리 코딩

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그