如何在不使用插件的情况下从 Jenkins 将 war 文件部署到 Tomcat

How to deploy war file to Tomcat from Jenkins without using plugin

我想在不使用这个“部署到容器”插件的情况下从我的 Jenkins 部署到 Tomcat。

所以我正在考虑 Tomcat REST API 来部署 war 文件。 Tomcat 和 Jenkins 在不同的服务器上。

也许只将文件复制到 webapps 文件夹就足够了?但后来我仍然必须部署它意味着启动它。对吗?

老实说,到目前为止我还没有发现任何 REST API 可以部署到 Tomcat。问题是使 .war 文件可用。

Jenkins,您可以使用 bash script.war 文件传输到您的 Tomcat webapps 目录(代码相同,如果你和 pipeline).

一起工作

首先,停止 Tomcat

ssh tomcat@tomcat '${TOMCAT_BIN_PATH}shutdown.sh'

然后,将 war 复制到 Tomcat

webapps 目录
scp -r -p jenkins@jenkins:path/to/war/file.war tomcat@tomcat:path/to/webapp/

之后,您必须启动 Tomcat.war 将自动部署

ssh tomcat@tomcat '${TOMCAT_BIN_PATH}startup.sh'

如果你正在使用Maven,我建议你看看tomcat-maven-plugin,你可以找到它here。您可以使用以下命令部署 war 文件:

mvn -B -P deploy-profile-from-pom-xml tomcat7:deploy-only

可以找到实施示例 here


更新

如果您希望 Tomcat 延迟 webapps 目录检查,您可以将 backgroundProcessorDelay 添加到您的 server.xml 配置中

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" backgroundProcessorDelay="15">
例如,

Tomcat 只会使用此代码每 15 秒检查一次新的 .war