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

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

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

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

请指导。

通常,您使用像Jenkins这样的CI工具来运行将War文件发布到Nexus的Maven构建。 然后,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

我的偏好是使用Rundeck进行部署,因为它有一个Nexus插件 ,提供方便的可用版本下拉菜单。

还有一个用于Jenkins的Rundeck插件 ,可以用来协调CI进程,Jenkins执行构建,移交到Rundeck进行部署,然后进行Jenkins回调以运行集成测试。

厨师

我还使用厨师,可用于以拉动方式自动部署软件。

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

…… ..

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

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

我使用了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 

谢谢
-Sudarshan