如何在不使用插件的情况下从 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
。
我想在不使用这个“部署到容器”插件的情况下从我的 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
。