프로젝트의 빌드버전 확인 - QA관점의 몰래 빌드 금지

SVN을 이용하여 hudson을 빌드시 SVN Head를 포함시켜 중간에 개발자가 변경하여 빌드하는 것을 방지하기 위해 만든 스크립트.

checkversion.jar 파일을 만들어 Manifest에 build date와 최종 svn version을 기록합니다.
아래 쪽의 JSP를 만들어 디플로이 시킨 후 jar 파일의 manifest를 이용하여 버전을 확인합니다.

<target name="jar-checkversion">

		<svn javahl="true"> 
		    <info target="${svn.url}/" /> 
		</svn> 
		<property name="latestRevisionNo" value="${svn.info.lastRev}"/> 
		<echo>******** URL : ${svn.url}/projects/${project.name}/${target}/${REPO_BRANCH}</echo>
		<echo>******** REVISION HEAD : ${latestRevisionNo}</echo>
		
		<jar destfile="checkversion.jar">
			<manifest>
				<attribute name="Revision-Number" value="${latestRevisionNo}"/>

				<attribute name="Build-Date" value="${DSTAMP} ${TSTAMP}"/>
			</manifest>
		</jar>
		<echo>SVN Revision : ${latestRevisionNo}</echo>
		<copy file="checkversion.jar" tofile="${build.dir}/src/${target}/lib/checkversion.jar"
			overwrite="true" failonerror="false"/>
	</target>



<%@ page import="java.util.*, java.io.*, java.util.jar.*" %>

<%!
    public String [] checkVersion(String jarFileUrl) throws Exception {
        JarFile jarFile = new JarFile(new File(jarFileUrl)); 
        Manifest manifest = jarFile.getManifest();
        Attributes attributes = (Attributes) manifest.getMainAttributes();
        String buildDate = attributes.getValue("Build-Date"); 
        String revision = attributes.getValue("Revision-Number"); 

	return new String [] {buildDate, revision};
    }
%>	

<%
    String portalJar = "/jboss/apps/admin/portal.war/WEB-INF/lib/checkversion.jar";
    String [] data = checkVersion(portalJar);

    
    out.println("Admin Portal Version<br>");
    out.println("===============================<br>");
    out.println("Build Date : " + data[0] + "<br>");
    out.println("Revision : " + data[1] + "<br><p>");
%>
크리에이티브 커먼즈 라이센스
Creative Commons License
2012/01/18 08:41 2012/01/18 08:41
http://www.javapattern.info/trackback/415