【问题标题】:Jenkins maven-release-pluginJenkins Maven 发布插件
【发布时间】: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


【解决方案1】:

我们为每个环境(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 release 插件的缺点有很多文章)。您仍然可以使用 Jenkins M2 发布插件,但在它的配置、发布目标和选项中,请改为调用 mvn release:clean promote:prepare release:prepare。更多详情:https://github.com/mjiderhamn/promote-maven-plugin/issues/2

【讨论】:

    【解决方案2】:

    也许你应该考虑看看这篇文章:https://pragmaticintegrator.wordpress.com/2014/05/12/running-the-maven-release-plugin-with-jenkins/

    使用Jenkins Release plugin,您可以自定义发布工作流程,以便在 M2 发布完成后添加特定步骤。

    【讨论】:

    猜你喜欢
    • 2013-04-02
    • 2018-06-02
    • 2013-09-06
    • 2018-03-29
    • 2015-11-25
    • 1970-01-01
    • 2013-09-28
    • 2016-03-03
    • 2020-05-07
    相关资源
    最近更新 更多