求助 V 友! Jenkins 在 windows 服务器上启动 jar 包的问题

2019-11-21 21:47:55 +08:00
 CodeXx

第一次接触 Jenkins,有多台 windows 服务器部署同一个 jar,想用一个 job 执行部署。通过 java-jar 的方式启动后控制台会一直输出内容,导致无法部署到下一台服务器。看网上的是都是 start javaw -jar 执行的,但是我用了 start 执行后服务器上没反应,jar 包没有启动。

4628 次点击
所在节点    程序员
32 条回复
CodeXx
2019-11-22 14:24:04 +08:00
@Firxiao 试过了,start /b 启动一样的,会在任务结束后杀死进程
CodeXx
2019-11-22 14:25:17 +08:00
@fonlan 我以为是说把要部署的 jar 包搞成 Windows 服务来启动。Jenkins 作为 Windows 服务后可以解决这个问题吗?我去试下
qweznmadmin
2019-11-23 14:24:31 +08:00
@CodeXx 你这个问题是 jenkins 默认会在构建完成后杀死构建过程中由 jenkins 中的 shell 命令触发的衍生进程
可以考虑关闭这个功能。
话说你怎么解决下次部署的时候自动关闭程序。我是直接用 c#嵌套解决
mmdsun
2019-11-23 19:13:15 +08:00
启动外部.bat 即可。Jenkins 有个配置可以不杀死启动进程
mmdsun
2019-11-23 19:18:09 +08:00
BUILD_ID=dontKillMe /linedata/home/jenkins/auto_build.bat
CodeXx
2019-11-25 09:13:40 +08:00
@mmdsun 这样启动提示:'BUILD_ID' 不是内部或外部命令,也不是可运行的程序或批处理文件。
CodeXx
2019-11-25 09:23:01 +08:00
@qweznmadmin 用的是 batch 脚本,启动 Jenkins 的时候加了这个参数
java -Dhudson.util.ProcessTree.disable=true -jar D:\Jenkins\jenkins.war
但是没用。
我现在的解决方案是把构建的超时时间设为 20s,超时后会断开 ssh,这样断开就不会杀死进程。然后又执行下一个服务器的操作,也算是实现了部署多台服务器了
CodeXx
2019-11-25 09:35:28 +08:00
@mmdsun batch 应该是
set BUILD_ID = dontKillMe
xxx.bat
不过也没用
mmdsun
2019-11-25 18:42:57 +08:00
@CodeXx
什么版本的?
去 Windows batch command
点击输入框下方的“可用环境变量”。

jenkins 默认会在构建完成后杀掉构建过程中又 jenkins 中 shell 命令触发的衍生进程。jenkins 根据 BUILD_ID 识别某个进程是否为构建过程的衍生进程,故修改 BUILD_ID 后,jenkins 就无法识别是否为衍生进程,则此进程能在后台保留运行。
CodeXx
2019-11-26 09:01:05 +08:00
@mmdsun 官网最新的 war 包,在“可用环境变量”里有 BUILD_ID
CodeXx
2019-11-26 09:04:01 +08:00
@mmdsun 我的构建不是用的 Execute Windows batch command,我用的 Send File or excute commands over SSH
lngg057
2021-01-26 09:52:59 +08:00
看官方文档,有描述。
启动 war 包的时候,采用这种方式:java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
禁用 ProcessTree 即可避免自动杀进程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/621908

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX