보통 빌드 툴로 maven을 가장많이 사용한다고 생각하는데.. 요즘은 gradle 인가요??


maven으로 빌드 시 revision 번호를 남기는 것을 남겨봅니다.


war 파일로 빌드하기 때문에 maven-war-plugin를 사용하며, 버전은 최소 2.3이상을 해야 error 가 없었습니다.. 

2.1 했더니 에러가..ㅎㄷㄷ


현재는 2.5.x 까지 나온걸로 확인됩니다~ 


configuration 의  war..., resource 부분의 경우 경우 build 시 경로지정이므로 생략하고 


Archive 부분을 살펴보면 manifest 부분을 꼭 확인해야 합니다~

<plugin>

<artifactId>maven-war-plugin</artifactId>

<version>2.3</version>

<configuration>

<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>

<webResource>

<directory>${basedir}/src/main/webapp</directory>

<targetPath>WEB-INF</targetPath>

</webResource>

<archive>

<manifest>

<addDefaultImplementationEntries>true</addDefaultImplementationEntries>

</manifest>

<manifestEntries>

<Revision>${build.number}</Revision>

<Build-Date>${build.timestamp}</Build-Date>

</manifestEntries>

</archive>

</configuration>

</plugin>



Application을 배포하면 META-INF 폴더가 생성되는데~ 하위에 MANIFEST.MF 파일안에 build 정보를 담을 수 있습니다~


## addDefaultImplementationEntries - 기본적인 프로젝트의 정보를 담는다.

Implementation-Title: ${project.name}

Implementation-Version: ${project.version}
Implementation-Vendor-Id: ${project.groupId}
Implementation-Vendor: ${project.organization.name}
Implementation-URL: ${project.url}


## manifestEntries 기능으로 추가적으로 정보를 담을 수 있는데 우리는 여기서 Revision, Build-Date 를 담기로 합니다~

${build.number} 변수지정으로 뭔가 값을 담기로 약속했다. ${build.timestamp} 의 경우 기본적으로 제공되는 기능임~

물론 <maven.build.timestamp.format>yyyy-MM-dd HH:mm:s Z</maven.build.timestamp.format> 포맷지정가능!!


## ${build.number} 의 값은 Local 에서 테스트해보면 값이 비어있다!! 멘붕 

>> 이유는 간단하다 revision 이라는 것은 SVN 또는 형상관리툴에서 사용하는 번호로 가장 최근 commit, submit 값을 담고있다. 그런데 로컬에서 빌드시에는 따로 svn 과 연동을 하지 않기때문에 해당값이 정상적으로 담기지 않는다.... 

근데 로컬에서도 SVN 연동되니까 왠지 가능할 것 같기도 한데?? >> 난 실패함 ㅠㅠ


## ${build.number} 해당값은 jenkins 에서 불러온다. 그렇다면 어디서??

- jenkins 프로젝트의 설정부분에 보면 maven 설정부분이 있는데 여기서 Goals and options 에서 지정가능하다!!

- clean , package 로 빌드하고 옵션값으로 SVN_REVISION을 지정할 수 있다. 물론 변수명은 같아야 되니까 build.number 써주는 센스



물론?? SVN Revision 만 되는건 아닌다~ 아래 사이트를 참고하자~

https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables


사용할 수 있는 모든 값들이 표시되어 있다!!


Local에서 테스트하다가 멘붕오시고 scm 같은거 넣다가 망하신 분들을 위해 넣었습니다. 굉장히 사소하지만 반드시 필요한 revision 입니다.


이게 왜 필요하냐구요??? 

만약 여러분이 서비스하는 사이트가 방대해져서 실제 서버 개수가 100개가 넘어간다 가정해봅시다!! 

자동배포툴을 사용해서 한다고 해도 100개가 넘는서버에 배포작업을 해야되는데 전부 같은 파일이 배포되었는지 어떻게 확인을 할지 생각을 해 봅시다~


실제 서버에서 확인한 결과물입니다.



Revision: 575 부분이 정확하게 찍혀있습니다~


아 그리고... 로컬에서 성공하신분들 꼭 알려주시면 감사요~

저작자 표시
신고

+ Recent posts

티스토리 툴바