2012-05-10 4 views
3

다음 시나리오를 고려하십시오. 빌드 도구로 maven을 사용하고 버전 제어를 위해 svn 또는 다른 도구를 사용하여 프로젝트를 개발했습니다. 어떤 점에서표제 출시 후보 또는 분기의 Maven 릴리즈

나는 그것이 릴리스에 대한 "아마도"준비가되어 있음을 결정하고 난 새로운 개발 버전으로 pom.xml를 업데이트해야 할이 시점에서 release candidate

+ Trunk (0.0.1-SNAPSHOT) 
| 
+----------------------------+ Branch "release-candidate" (0.0.1-SNAPSHOT) 
|       | (goes to QA for testing) 
+ Trunk (0.0.2-SNAPSHOT)  | 
| (development continues) + Tag "release-0.0.1" (0.0.1) 
....       (deploy this revision) 

로 표시하는 svn 태그를 설정 . release-candidate은 테스트를 통해 품질 보증이 완료되고 릴리즈 준비가 완료 될 때까지 스냅 샷 버전을 유지합니다. 그래야만 실제 릴리스 + 배포가 태그/분기에서 수행됩니다.

릴리스 후보가 테스트되는 동안 개발이 트렁크에서 계속 될 수 있습니다.

이 2 단계 릴리스 시나리오를 Maven 빌드로 구현할 수 있습니까? release 플러그인으로 충분합니까? 아니면 다른 플러그인이 필요합니까?

답변

3

Maven Release Plugin은 Maven 프로젝트를 배포하기위한 사실상의 표준이며 이에 대한 구체적인 워크 플로우를 강요합니다. 보시다시피, 당신은 꽤 다른 가정을 가지고 있습니다,하지만 여기 Maven의 컨벤션에 맞추려고한다면, Maven Release Plugin은 모든 일을 여기에서 할 것입니다.

우선 목표는 새로운 개발 준비가 된 trunk의 버전을 부딪 치면서 일부 버전 라인 브랜치를 만드는 데 도움이 될 수 있습니다. 그러나 제 의견으로는 다음 분기마다이 지점 이름 (여기서는 release-candidate)을 공유하는 것이 좋습니다. 오히려 여기서 표준적인 방법은 릴리스 당 종류의 릴리스 지점을 수행하는 것입니다. 여기서 실제 스니핑 된 최종 릴리스 이전에 스레딩 작업을 수행합니다. 예를 들어, 지점 이름 0.0.1은 OK입니다. 그런데 release:branch 목표 업데이트태그가 POM에 생성 된 지점을 가리 키므로 공유 분기를 사용하는 것이 좋습니다.

당신의 릴리스 후보를 연마 한 후에는 메이븐에서 평소와 같이, 지점에서 꽤 표준 release:preparerelease:perform 전화 를 사용하여 실제 릴리스를 할 수 있습니다. 태그, 배포 물건 등을 생성합니다.

이제이 브랜치 이름을 고정시키고 싶다면 (테스터의 필요성 등으로) 항상 svn:externals 것을 사용하고 release-candidate 별칭을 업데이트하면 항상 현재를 가리킬 수 있습니다 릴리스 후보 지점.

+0

실제로 jenkins 작업에 대해 고정 릴리스 후보 분기를 사용하고있었습니다. 나는 별칭으로 이것을 사용하는 것을 좋아한다. 감사. – Yashima