第一次接触 Jenkins,有多台 windows 服务器部署同一个 jar,想用一个 job 执行部署。通过 java-jar 的方式启动后控制台会一直输出内容,导致无法部署到下一台服务器。看网上的是都是 start javaw -jar 执行的,但是我用了 start 执行后服务器上没反应,jar 包没有启动。
1
fonlan 2019-11-21 22:30:36 +08:00 via Android
windows 的话为啥不直接部署成服务模式?
|
3
xwbz2018 2019-11-22 08:50:45 +08:00 via Android
nohup 了解一下
|
6
CodeXx OP 啊啊啊,没人用 Jenkins 整 Windows 服务器的吗??
|
7
xwbz2018 2019-11-22 09:04:48 +08:00 via Android
|
9
CodeXx OP 发现一个骚操作,把超时时间设为 20s,超时关闭连接的时候不会把启动的 Java 进程关掉
|
12
CodeXx OP 我就很纳闷了,网上都是直接 start 启动的,他们不会出现杀进程的情况吗
|
15
Elfred2096 2019-11-22 12:03:17 +08:00
|
16
tomczhen 2019-11-22 12:08:08 +08:00 via Android
文档上不是有 install Jenkins as Windows service 这段吗?
|
18
CodeXx OP @Elfred2096 试过了
|
19
Firxiao 2019-11-22 13:51:16 +08:00
你的问题应该是 Windows 如何在 cmd 下跑后台进程吧?
帮你搜了下. https://superuser.com/questions/198525/how-can-i-execute-a-windows-command-line-in-background ``` START /B program ``` |
20
fonlan 2019-11-22 13:58:50 +08:00 via Android
@CodeXx 麻烦????启动 agent 的 jar 包后不是有个界面的么,界面左上角有个菜单,点下就安装成 windows 服务了啊,没有更简单的了吧
|
22
CodeXx OP @fonlan 我以为是说把要部署的 jar 包搞成 Windows 服务来启动。Jenkins 作为 Windows 服务后可以解决这个问题吗?我去试下
|
23
qweznmadmin 2019-11-23 14:24:31 +08:00
@CodeXx 你这个问题是 jenkins 默认会在构建完成后杀死构建过程中由 jenkins 中的 shell 命令触发的衍生进程
可以考虑关闭这个功能。 话说你怎么解决下次部署的时候自动关闭程序。我是直接用 c#嵌套解决 |
24
mmdsun 2019-11-23 19:13:15 +08:00 via Android
启动外部.bat 即可。Jenkins 有个配置可以不杀死启动进程
|
25
mmdsun 2019-11-23 19:18:09 +08:00 via Android
BUILD_ID=dontKillMe /linedata/home/jenkins/auto_build.bat
|
27
CodeXx OP @qweznmadmin 用的是 batch 脚本,启动 Jenkins 的时候加了这个参数
java -Dhudson.util.ProcessTree.disable=true -jar D:\Jenkins\jenkins.war 但是没用。 我现在的解决方案是把构建的超时时间设为 20s,超时后会断开 ssh,这样断开就不会杀死进程。然后又执行下一个服务器的操作,也算是实现了部署多台服务器了 |
29
mmdsun 2019-11-25 18:42:57 +08:00 via Android
@CodeXx
什么版本的? 去 Windows batch command 点击输入框下方的“可用环境变量”。 jenkins 默认会在构建完成后杀掉构建过程中又 jenkins 中 shell 命令触发的衍生进程。jenkins 根据 BUILD_ID 识别某个进程是否为构建过程的衍生进程,故修改 BUILD_ID 后,jenkins 就无法识别是否为衍生进程,则此进程能在后台保留运行。 |
31
CodeXx OP @mmdsun 我的构建不是用的 Execute Windows batch command,我用的 Send File or excute commands over SSH
|
32
lngg057 2021-01-26 09:52:59 +08:00
看官方文档,有描述。
启动 war 包的时候,采用这种方式:java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war 禁用 ProcessTree 即可避免自动杀进程 |