java - 使用 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 也无济于事。
这个问题与这个问题不同,因为在他的情况下,文件被重命名,而我的被删除。
如何阻止插件删除上下文文件?如果我不能,可以使用什么替代方案?
解决方案
我一直在我的 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
推荐阅读
- tensorflow - 当我处理超过 1.5 Gig CSV 时,张量流数据验证在 4 核机器上崩溃
- python - 如何在pyspark中将字符串值转换为arrayType
- javafx - 场景构建器中的 Javafx 表视图未插入用户输入
- laravel - 带控制器的智能路由
- python-3.x - Python字典项目问题
- ios - 从一个视图控制器切换到另一个视图控制器,无需用户交互
- java - Kotlin Jar 错误:线程“Timer-0”java.lang.NoSuchMethodError 中的异常
- java - ArrayList 和继承与多态和复制构造函数
- c# - 我的控制台应用程序出错“程序不包含适合入口点的静态‘主要’方法”
- xpath - 如何使用 XPATH 分别获取每个值