如何自动将战争从 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?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jenkins 将战争文件部署到 Tomcat 的推荐方法?