java - 使用 Jenkins Deploy 插件部署到 Tomcat 而无需删除上下文 xml 文件

标签 java tomcat jenkins deployment

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

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

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

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

这个问题不同于this one与他的情况一样,文件被重命名而我的被删除。

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

最佳答案

我一直在我的 jenkins 管道作业中使用 curl 语句退出一段时间,因为我们的生产环境中有负载平衡器,所以我们需要多次启动停止,而 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

关于java - 使用 Jenkins Deploy 插件部署到 Tomcat 而无需删除上下文 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50931964/

相关文章:

java - 在java中分层JPanel?

java - 是否有可能中断 Eclipse 调试器中的每个对象引用?

javascript - 为 loginid 使用持久性 cookie 的风险

multithreading - 使用 Spring boot 和 CompletableFuture 及其线程管理编写异步 Rest API

java - 在 liferays 留言板中打开验证码

java - 如何在自定义 Tapestry 5 组件中使用 jQuery

java - Applet 在 Tomcat 中不显示来自 URL 的图像

continuous-integration - 将 SourceMonitor 集成到 Jenkins CI 系统中

docker - 使用 Jenkins 和 docker 插件限制 cpu

docker - jenkins 安装插件失败 - docker image