【发布时间】:2014-09-12 14:44:29
【问题描述】:
在 Jenkins(最新)、Maven 3.0.x 中,我有一个项目(Java 源代码)。
我正在使用 M2 发布插件,它在 Jenkins 作业上提供了一个不错的“执行 Maven 发布”按钮(Jenkins 作业仪表板上的左侧窗格)。在幕后 / 在 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。再次使用 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>
我需要的是:
1) 一旦上述过程生成 x.x.x 发布工件并运行一些集成测试,我如何使“执行 Maven 发布”过程调用部署到服务器。这应该在 maven-release-plugin 进程将工件部署到二进制存储库(Artifactory/Nexus)之前发生。即,如果您将工件放在发布存储库中,那么非单元测试也会成功(不是工件位于 Artifactory 的 libs-release-local 存储库中,并且尚未启动集成测试。
或者我是否需要更改...以使用 libs-snapshot-local(Artifactory 存储库),然后运行 IT 测试,最后如果这些测试成功,将 1.0.0 版本工件从 libs-stage-local 存储库移动到libs-release-local 存储库。
我知道我可以将 maven-release-plugin 相关设置放在 Maven 用户的 .m2/settings.xml(用户全局)或 M2_HOME/.m2/settings.xml(全局)中,但此时,这不是问题.
【问题讨论】:
-
你有 IT 吗?它们是如何集成到您的构建中的?通过个人资料?通过 maven-failsafe-plugin 还是如何?
-
我们有一个 IT 测试,我们在一个虚拟机上部署/启动 tomcat(我们动态创建它,将应用程序工件部署到它,运行测试然后销毁虚拟机)之后运行它持续集成环境。如果一切都通过了,那么工件应该转到“libs-release-local”,而不是先转到这个 repo 然后运行测试。
标签: maven deployment jenkins maven-release-plugin artifacts