Jenkins并行执行两个Bat命令异常问题求助
解决Jenkins并行运行Putty与诊断工具的问题
嘿,我来帮你搞定这个Jenkins并行运行Putty和诊断工具的问题!
你现在遇到的情况根源在于当前parallel阶段的执行逻辑是阻塞式的:
- 启动Putty的
bat 'putty.exe -load "myConfiguration"'命令会一直占用控制台,必须等Putty手动关闭才会结束这个stage; - 诊断工具的stage执行完成后就结束了,但Putty的stage还在持续等待,最终导致诊断工具停了、Putty却一直运行,Jenkins任务也卡在那里无法收尾。
正确的解决方案
把所有操作合并到同一个stage中,采用「后台启动Putty → 运行诊断工具 → 诊断完成后终止Putty」的流程,脚本示例如下:
stage('Data collection') { agent { label 'HCNJKENCFDSL' } steps { dir("C:/..../PuTTY") { // 后台启动Putty,避免阻塞Jenkins流程 bat 'start /B putty.exe -load "myConfiguration"' } // 运行诊断工具脚本,此步骤会阻塞直到诊断工具执行完成 bat 'C:/.../Application_D_Start.vbs' // 诊断工具结束后,强制终止Putty进程 bat 'taskkill /IM putty.exe /F' } }
关键步骤说明
start /B:让Putty在后台启动,这样Jenkins不会等待Putty关闭,而是继续执行后续步骤;- 诊断工具脚本:这一步会正常阻塞,直到诊断工具完成所有任务;
taskkill /IM putty.exe /F:诊断完成后强制杀掉Putty进程,确保Jenkins任务能正常结束。
如果你的环境中可能存在多个Putty实例,可以考虑通过窗口标题或进程ID来精准终止对应进程,但如果本次启动的Putty是唯一实例,上面的命令就足够用啦。
内容的提问来源于stack exchange,提问作者Sharky
相关产品推荐
相关产品推荐

