문제

Hudson을 배치 작업 플러그인을 사용하여 내부 저장소에 Maven 릴리스를 수행합니다. 나는 그것을 통해 그것을하고있다 :

mvn --batch-mode release:prepare
mvn --batch-mode release:perform

사람들이 사용한 다른 방법과 그 방법의 장단점에 관심이 있습니다. 또한, 사람들이 만난 모든 Gotchas.

도움이 되었습니까?

해결책

나는 몇 가지 이유로 항상 손으로 릴리스를하는 경향이있었습니다. 먼저 롤백 해야하는 경우 원래 릴리스 위치로 돌아가서 수행 할 수있을 때 더 쉽습니다. 둘째, 프로세스의 일부로 모든 스냅 샷 종속성을 해결해야하기 때문입니다.

우리의 개발 프로세스는 수정이 업그레이드가 필요할 때까지 이전 릴리스 버전의 현재 빌드 외부의 종속성을 남겨 두도록합니다. 이것은 내가 Nexus, Maven 등을 공개한다면 스냅 샷을 볼 수 있으며, 먼저 떠나서 먼저 출시해야한다는 것을 의미합니다. 이 프로세스는 마지막 릴리스 이후 변경된 내용에 따라 다르기 때문에 자동화 할 수 없습니다.

즉, 우리는 빌드에 대해서만 특수 머신 (Sonatype에서 VM 일뿐) 설정을 가지고 있습니다. 이는 실수로 빌드에 영향을 줄 수있는 환경 변화가 발생하지 않도록 보장하기 위해 수행됩니다 (JDK 변경과 같은). 또한 항상 갈 준비가되어 있기 때문에 누구나 릴리스 프로세스를 쉽게 선택할 수 있습니다.

다른 팁

최근에 M2Release 플러그인이 주목을 받았습니다. 멋져 보였다. 모든 릴리스 프로세스가 완전히«pom-tweaking-free»를 좋아했을 것입니다. 그 의미는 전체 릴리스를 처리하기 위해 4 개의 입력 매개 변수를 제공해야한다는 것입니다.

  1. 릴리스 버전 (예 : 1.0.0)
  2. 새로운 개발 버전 (예 : 1.0.1-snapshot)
  3. SCM의 릴리스 태그 (예 : 릴리스 -1.0.0 또는 1.0.0)
  4. SCM의 태그 기본 경로

처음 2 개는 허용 가능한 기본값을 가지고 있습니다. 버그 고정 버전 숫자에서 부딪 치는 버전은 나에게 완벽하게 괜찮습니다.

4 번은 POM에 지정할 수 있습니다. 변하지 않을 것입니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

버튼을 누르는 시점에서 릴리스의 완전한 자동화를 방지하는 것은 세 번째입니다. 기본 릴리스 태그 레이블은 우리를 위해 수행하지 않으므로 다음을 지정해야합니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tag>release-${pom.version}</tag>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

이제 이것이 내가 필요한 것일 수 있지만 결국 -SnapShot과 함께 SVN 태그가 있습니다. :( 따라서 Hudson 작업 구성에서 태그 매개 변수를 전달해야합니다. 또한, 우리가 만드는 각 릴리스마다 변경해야합니다. 이것이 바로 내가 필요한 것이 아닙니다.


결국, Hudson +에 Maven2 유형 프로젝트가있는 M2Release Hudson Plugin + Maven 릴리스 플러그인이 올바르게 구성된 Maven 릴리스 플러그인은 지금까지 본 모든 릴리스 프로세스의 어머니입니다. 완벽하지는 않지만, 그것은 나에게 많은 일을 절약했습니다.

JS.

나는 항상 명백한 장단점으로 수동으로 릴리스를 트리거했습니다 :-)

우리는 Hudson Maven Release 플러그인을 실험 해 왔지만, 하드 코딩 암호를 빌드 파일에 하드 코딩하는 것과 같은 사악한 것없이 릴리스를 제대로 신용하는 데 약간의 도전이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top