求助 V 友! Jenkins 在 windows 服务器上启动 jar 包的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
CodeXx
V2EX    程序员

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

  •  1
     
  •   CodeXx 2019 年 11 月 21 日 5128 次点击
    这是一个创建于 2316 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言    2019 年 11 月 21 日
    start 后加了 ping /n 50 127.1 >nul 相当于 sleep 了 50s,发现程序启动成功了,但是 50s 后又关闭了。
    应该是 Jenkins build 结束后会 kill 掉衍生进程。看了下要设置变量 BUILD_ID,研究下 batch 脚本怎么设置
    第 2 条附言    2019 年 11 月 22 日
    在 start 前加上 set BUILD_ID = dontKillMe 也没用。。
    32 条回复    2021-01-26 09:52:59 +08:00
    fonlan
        1
    fonlan  
       2019 年 11 月 21 日 via Android
    windows 的话为啥不直接部署成服务模式?
    CodeXx
        2
    CodeXx  
    OP
       2019 年 11 月 21 日
    @fonlan 感觉有点麻烦,实在不行再考虑吧
    xwbz2018
        3
    xwbz2018  
       2019 年 11 月 22 日 via Android
    nohup 了解一下
    xwbz2018
        4
    xwbz2018  
       2019 年 11 月 22 日 via Android
    @xwbz2018 噢,Windows,打扰了
    CodeXx
        5
    CodeXx  
    OP
       2019 年 11 月 22 日
    @xwbz2018 Windows 上有 nohup 的插件。。但不想搞乱系统
    CodeXx
        6
    CodeXx  
    OP
       2019 年 11 月 22 日
    啊啊啊,没人用 Jenkins 整 Windows 服务器的吗??
    xwbz2018
        7
    xwbz2018  
       2019 年 11 月 22 日 via Android
    @CodeXx #5 start 加上再新建一个启动.bat ,里面直接 java -jar

    jenkins 脚本里 start 启动. bat

    应该可行
    CodeXx
        8
    CodeXx  
    OP
       2019 年 11 月 22 日
    @xwbz2018 试过了,job 执行完后又把启动的 Java 进程关掉了
    CodeXx
        9
    CodeXx  
    OP
       2019 年 11 月 22 日
    发现一个骚操作,把超时时间设为 20s,超时关闭连接的时候不会把启动的 Java 进程关掉
    julyclyde
        10
    julyclyde  
       2019 年 11 月 22 日
    @CodeXx 你啥都不想搞,那你就继续享受“无法部署下一台”吧
    CodeXx
        11
    CodeXx  
    OP
       2019 年 11 月 22 日
    @julyclyde 想啊,只是优先用常规的方式部署。实在不行再搞其他方法嘛
    CodeXx
        12
    CodeXx  
    OP
       2019 年 11 月 22 日
    我就很纳闷了,网上都是直接 start 启动的,他们不会出现杀进程的情况吗
    julyclyde
        13
    julyclyde  
       2019 年 11 月 22 日
    @CodeXx 常规情况大家不会用 windows 的
    CodeXx
        14
    CodeXx  
    OP
       2019 年 11 月 22 日
    @julyclyde 额额,公司用的我也没办法,还 tm 十几台
    Elfred2096
        15
    Elfred2096  
       2019 年 11 月 22 日
    这样试试?
    新建一个批处理 run.bat:
    @echo off

    start javaw -jar xx.jar

    exit
    tomczhen
        16
    tomczhen  
       2019 年 11 月 22 日 via Android
    文档上不是有 install Jenkins as Windows service 这段吗?
    CodeXx
        17
    CodeXx  
    OP
       2019 年 11 月 22 日
    @tomczhen 把 Jenkins 作为服务启动?现在是 war 包启动的,和这个有关?
    CodeXx
        18
    CodeXx  
    OP
       2019 年 11 月 22 日
    @Elfred2096 试过了
    Firxiao
        19
    Firxiao  
       2019 年 11 月 22 日
    你的问题应该是 Windows 如何在 cmd 下跑后台进程吧?
    帮你搜了下.
    https://superuser.com/questions/198525/how-can-i-execute-a-windows-command-line-in-background
    ```
    START /B program
    ```
    fonlan
        20
    fonlan  
       2019 年 11 月 22 日 via Android
    @CodeXx 麻烦????启动 agent 的 jar 包后不是有个界面的么,界面左上角有个菜单,点下就安装成 windows 服务了啊,没有更简单的了吧
    CodeXx
        21
    CodeXx  
    OP
       2019 年 11 月 22 日
    @Firxiao 试过了,start /b 启动一样的,会在任务结束后杀死进程
    CodeXx
        22
    CodeXx  
    OP
       2019 年 11 月 22 日
    @fonlan 我以为是说把要部署的 jar 包搞成 Windows 服务来启动。Jenkins 作为 Windows 服务后可以解决这个问题吗?我去试下
    qweznmadmin
        23
    qweznmadmin  
       2019 年 11 月 23 日
    @CodeXx 你这个问题是 jenkins 默认会在构建完成后杀死构建过程中由 jenkins 中的 shell 命令触发的衍生进程
    可以考虑关闭这个功能。
    话说你怎么解决下次部署的时候自动关闭程序。我是直接用 c#嵌套解决
    mmdsun
        24
    mmdsun  
       2019 年 11 月 23 日 via Android
    启动外部.bat 即可。Jenkins 有个配置可以不杀死启动进程
    mmdsun
        25
    mmdsun  
       2019 年 11 月 23 日 via Android
    BUILD_ID=dontKillMe /linedata/home/jenkins/auto_build.bat
    CodeXx
        26
    CodeXx  
    OP
       2019 年 11 月 25 日
    @mmdsun 这样启动提示:'BUILD_ID' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    CodeXx
        27
    CodeXx  
    OP
       2019 年 11 月 25 日
    @qweznmadmin 用的是 batch 脚本,启动 Jenkins 的时候加了这个参数
    java -Dhudson.util.ProcessTree.disable=true -jar D:\Jenkins\jenkins.war
    但是没用。
    我现在的解决方案是把构建的超时时间设为 20s,超时后会断开 ssh,这样断开就不会杀死进程。然后又执行下一个服务器的操作,也算是实现了部署多台服务器了
    CodeXx
        28
    CodeXx  
    OP
       2019 年 11 月 25 日
    @mmdsun batch 应该是
    set BUILD_ID = dontKillMe
    xxx.bat
    不过也没用
    mmdsun
        29
    mmdsun  
       2019 年 11 月 25 日 via Android
    @CodeXx
    什么版本的?
    去 Windows batch command
    点击输入框下方的“可用环境变量”。

    jenkins 默认会在构建完成后杀掉构建过程中又 jenkins 中 shell 命令触发的衍生进程。jenkins 根据 BUILD_ID 识别某个进程是否为构建过程的衍生进程,故修改 BUILD_ID 后,jenkins 就无法识别是否为衍生进程,则此进程能在后台保留运行。
    CodeXx
        30
    CodeXx  
    OP
       2019 年 11 月 26 日
    @mmdsun 官网最新的 war 包,在“可用环境变量”里有 BUILD_ID
    CodeXx
        31
    CodeXx  
    OP
       2019 年 11 月 26 日
    @mmdsun 我的构建不是用的 Execute Windows batch command,我用的 Send File or excute commands over SSH
    lngg057
        32
    lngg057  
       2021 年 1 月 26 日
    看官方文档,有描述。
    启动 war 包的时候,采用这种方式:java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
    禁用 ProcessTree 即可避免自动杀进程
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5982 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 03:05 PVG 11:05 LAX 20:05 JFK 23:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86