首页 > 解决方案 > 使用 Jenkins Deploy 插件部署到 Tomcat 而不删除上下文 xml 文件

问题描述

我正在使用 Jenkins Deploy to container插件将我的项目部署到本地 tomcat。根据 Jenkins 控制台输出,插件重新部署、取消部署,然后作为其流程的一部分进行部署。在取消部署期间,tomcat 删除 $CATALINA_BASE/conf/[enginename]/[hostname]/[myprojectname].xml 上下文文件(又名 $CATALINA_BASE/conf/Catalina/localhost/[myprojectname].xml),原因见此处

据我所知,该问题的答案在使用部署插件时不适用。

我正在使用此文件来配置资源并将其放入 /META-INF/context.xml 是不可行的,因为我需要能够部署到不同的上下文。

我尝试将文件设置为只读,这会导致 Jenkins 进程失败,因为它无法删除文件。在 server.xml 中将 autoDeployment 设置为 false 也无济于事。

这个问题与这个问题不同,因为在他的情况下,文件被重命名,而我的被删除。

如何阻止插件删除上下文文件?如果我不能,可以使用什么替代方案?

标签: javatomcatjenkinsdeployment

解决方案


我一直在我的 jenkins 管道作业中使用 curl 语句退出一段时间,因为我们的 prod 环境中有负载均衡器,所以我们需要多次启动停止,这不受 Deploy 插件的支持。因此,我们改为使用 curl 语句进行 tomcat 部署。你可以试一试:

curl --upload-file <file_path> -u <username>:<password>  "http://<URL>:<port>/manager/text/deploy?path=/<context>&update=true"

这里用户名和密码是tomcat脚本管理器的凭据。update = true 负责重新部署。我不认为它会删除 context.xml


推荐阅读