2010년 4월 13일 화요일

release 관리

제품에 대한 릴리즈 정책은 중요하다.
우리는 SVN으로 형상관리를 하고 있으며 trunk/branches/tags 로 관리되어 지고 있다.
trunk는 현재의 Main Stream으로 진행중인 개발코드가 관리 되어지며 tags에는 릴리즈된 버전, branches에는 현재 릴리즈된 버전의 패치 버전을 관리 하게 된다.

개발자들은 trunk 로 작업을 하게 되고 릴리즈된 버전의 버그나 오류가 발견됐을 시의 패치를 할 경우 tags에 있는 릴리즈 버전을 branches로 옮겨서 해당 버그를 패치 하기 위해 branches 를 체크아웃 받아서 작업을 수행하게 된다.

패치가 완료가 되면 패치버전을 추가 시켜서 릴리즈를 한다.
지금 까지가 현재 우리가 적용하고 있는 정책이다.

현재 개발 버전 : 1.0.0-SNAPSHOT
제품 릴리즈 버전 : 1.0.0
즉 현재 개발 버전에 SNAPSHOT을 빼고 릴리즈.
패치가 필요할 경우  : 1.0.0.0 - > tags에 릴리즈 된 것을 branches 로 옮긴다

제품 릴리즈에 적용하고 있는 기술을 maven-release-plugin을 사용하고있다.
제품에 대한 버전 변경관 배포를 자동으로 해주는 maven 플러그인이다.

 maven-release-plugin을 적용하기 위해 pom.xml에 다음을 추가해준다.

펼쳐두기..



현재 Main Stream을 tags로 옮기기.

새로운 워크스패이스를 만들어서  trunk 에 현재 릴리즈 할것을 모두 체크아웃 받자.
> svn co --username nextree  http://localhost/svn/nextree /trunk

trunk > mvn release:prepare
- > release버전, tags 라벨, 다음 개발버전(SNAPSHOT)지정.

위의 작업이 완료되면.
pom.xml에 추가되어 있는 모듈들이 trunk하위에는 다음 개발버전으로 변경되어 있고 tags하위에는 추가한 라벨 하위에 release버전으로 추가되어있다.

prepare 에서 실패를 하였을 경우
> mvn release:rollback

prepare가 성공을 하였다면
mvn release:perform
perform을 실행하면 release된 버전들은 개발 아티팩토리에 deploy 한다.

이제 개발자들은 새로운 SNAPSHOT으로 개발을 해야 하므로 버전 업된 SNAPSHOT들을 아티팩토리에 배포하여준다.





댓글 없음:

댓글 쓰기