如何自动将战争从 Nexus 部署到 Tomcat?

Posted

技术标签:

【中文标题】如何自动将战争从 Nexus 部署到 Tomcat?【英文标题】:How can I automatically deploy a war from Nexus to Tomcat? 【发布时间】:2014-04-29 11:12:09 【问题描述】:

我有一个在 Nexus 上成功构建和部署(SNAPSHOT 和发布版本)的 maven web 项目。我想知道 Nexus 中是否有功能/插件可以选择已发布的战争并自动部署在远程 Tomcat 上?

我知道您可以使用 maven-tomcat-plugin 将战争部署到远程 Tomcat,但想知道是否有替代解决方案。

请指导。

【问题讨论】:

JMX 会在这里帮忙。 @parsaporahmad JMX 有什么帮助?它用于窥探 JVM 内部......与部署无关。 【参考方案1】:

通常,您会使用 Jenkins 等 CI 工具来运行 Maven 构建,将您的 War 文件发布到 Nexus。然后,您使用的任何工具都会使用 Nexus 将 War 推送到目标 tomcat 环境:

有很多很多的选择。

Jenkins 发布构建 SSH 脚本

从 Jenkins 运行构建后 SSH 任务,在目标 tomcat 服务器上执行类似的操作:

curl "http://myrepo/nexus/service/local/artifact/maven/redirect?r=releases&g=myorg&a=myapp&v=1.1&e=war" \
     -o /usr/local/share/tomcat7/webapps/myapp.war
service tomcat7 restart

运行甲板

我的首选是使用Rundeck 进行部署,因为它有一个Nexus plugin,提供了可用版本的方便下拉菜单。

还有一个用于 Jenkins 的 Rundeck plugin,可用于编排 CI 流程,由 Jenkins 执行构建,移交给 Rundeck 进行部署,然后是 Jenkins 回调以运行集成测试。

厨师

我还使用可用于以拉取方式自动部署软件的 chef。

artifact 食谱直接支持 Nexus,而 application_java 食谱使用更通用的“从 URL 拉取”方法,也很有效。

.. ..

列表还在继续,所以我希望这会有所帮助。

【讨论】:

不错的答案马克!顺便提一句。书中现在列出了各种 Nexus 集成。查看books.sonatype.com/nexus-book/reference/community-projects.html @ManfredMoser 非常感谢!我必须签出 GroupId 管理。插件。【参考方案2】:

我们使用 UrbanCode 进行部署自动化,从 Artifactory/Nexus 检索战争并部署到目标服务器。

【讨论】:

【参考方案3】:

我使用了 Nexus Rest-API,这些端点将工件下载到 Jenkins 工作区。

为了将 Snapshot & Release 部署到 Tomcat,我们可以创建一个 Jenkins 参数化作业并将参数传递给 REST 端点,也可以部署到像 Tomact “Deploy WAR/EAR” Jenkins 插件这样的服务器。

我们可以参数化端点并作为“构建”步骤的一部分与构建的“执行 Shell 脚本”选项一起使用。

wget --user=$UserName --password=$Password "http://192.168.49.131:8080/nexus/service/local/artifact/maven/redirect?r=releases&g=$GroupId&a=$ArtifactId&v=$Version&e=$TypeOfArtifact" --content-disposition

Nexus 的实际端点如下所示。

wget --user=admin --password=admin123 "http://localhost:8080/nexus/service/local/artifact/maven/redirect?r=snapshots&g=org.codezarvis.artifactory&a=hushly&v=0.0.1-SNAPSHOT&e=jar" --content-disposition

wget --user=admin --password=admin123 "http://localhost:8080/nexus/service/local/artifact/maven/redirect?r=releases&g=org.codezarvis.artifactory&a=hushly&v=0.0.5&e=jar" --content-disposition

谢谢 -苏达山

【讨论】:

以上是关于如何自动将战争从 Nexus 部署到 Tomcat?的主要内容,如果未能解决你的问题,请参考以下文章

如何在部署阶段设置战争名称到 Nexus 存储库?

使用 Jenkins 将战争文件部署到 Tomcat 的推荐方法?

在没有 Tomcat 管理器的情况下从 jenkins 自动部署战争文件

如何使用詹金斯管道将战争部署到tomcat?

向tomcat部署战争

无法使用部署到容器插件从 jenkins 部署对 Tomcat 的战争