在Jenkins(最新),Maven 3.0.x中,我有一个项目(Java源代码) .
我'm using M2 release plugin, which provides a nice 901905 button on the Jenkins job (left hand side pane on the Jenkins job'的仪表板) . 在场景背后/在Jenkins工作的配置中,它调用: release:prepare release:perform 目标 .
当我点击“执行Maven发布”时,它成功完成了工作(从1.0.0-SNAPSHOT构建,如果成功则运行测试&&,对pom.xml进行更改并将版本作为1.0.0作为版本ID,执行更多验证并对pom.xml进行更改(maven-release-plugin检查等),在版本控制中提交此更改,在版本控制中将其标记为1.0.0作为“TAG”,再次将pom.xml更改为使用1.0.1-SNAPSHOT并提交它,然后从我们刚刚创建的标记的1.0.0发布版本标签中签出,在/ target / checkout文件夹下签出,构建relase 1.0.0工件(jar / war / pom等)和最后将它部署到你在里面提到的存储库......部分 .
<distributionManagement>
<repository>
<id>dev-artifactory</id>
<url>http://1.2.3.15:8081/artifactory/libs-release-local/</url>
</repository>
<snapshotRepository>
<id>dev-artifactory</id>
<url>http://1.2.3.15:8081/artifactory/libs-snapshot-local/</url>
</snapshotRepository>
</distributionManagement>
What I need is:
1)如果上面的过程生成x.x.x发布工件并运行一些集成测试,我怎样才能使“执行Maven发布”过程调用部署到服务器 . 这应该在将工件部署到二进制存储库(Artifactory / Nexus)之前由maven-release-plugin进程执行 . 即如果您将工件放在发布存储库中,那么非单元测试也是成功的(并非工件位于库中的发布 - 本地存储库中,并且尚未启动集成测试 .
或者我需要更改...以使用libs-snapshot-local(Artifactory存储库)然后运行IT测试,最后如果这些测试成功,将1.0.0版本工件从libs-stage-local存储库移动到libs-release - 本地存储库 .
我知道我可以在maven的用户的.m2 / settings.xml(用户全局)或M2_HOME / .m2 / settings.xml(全局)中放置maven-release-plugin相关设置,但此时,这不是问题 .
2 回答
我们为每个环境(dev,qa,prod)部署了Jenkins . 我们使用Promoted Builds,Copy Artifact和Parameterized Trigger插件在所有环境中移动相同的工件 . 要了解它们如何协同工作,请阅读这篇文章(How to promote a specific build number from another job in Jenkins?)
根据发布过程,而不是Maven Release插件,使用Maven Promote插件(http://java.jiderhamn.se/2016/05/04/announcing-maven-promote-plugin/)来发布已经构建和测试的工件(有很多关于maven发布插件的文章's drawbacks). You can still use Jenkins M2 Release Plugin, but in it's配置,发布目标和选项,调用
mvn release:clean promote:prepare release:prepare
而不是 . 更多详情:https://github.com/mjiderhamn/promote-maven-plugin/issues/2也许你应该考虑看一下这篇文章:https://pragmaticintegrator.wordpress.com/2014/05/12/running-the-maven-release-plugin-with-jenkins/
使用Jenkins Release plugin,您可以自定义发布工作流程,以便在M2发布完成后添加特定步骤 .