Jenkins节点重启后Pipeline停在Ready to run状态无法自动恢复
解决Jenkins声明式Pipeline重启后无法恢复PowerShell步骤的问题
针对你遇到的Jenkins重启(节点崩溃、主节点升级/重启等)后,Pipeline停在“Ready to run”状态无法自动恢复执行pwsh脚本的问题,可尝试以下方案:
1. 启用Pipeline步骤重启策略
在声明式Pipeline中添加restartStepsOnResume true配置,强制Jenkins在恢复时重新执行中断的步骤。修改后的Jenkinsfile如下:
pipeline { agent any options { restartStepsOnResume true // 全局启用步骤重启 } stages { stage('Build') { // 也可仅在特定stage启用该策略: // options { restartStepsOnResume true } steps { withCredentials(...) { pwsh script: './myscript.ps1', encoding: 'UTF-8' } } } } }
该配置会让Jenkins在Pipeline恢复时,重新执行中断点之后的步骤,而非停滞在等待状态。
2. 升级PowerShell插件
你当前使用的PowerShell插件版本为1.8,较旧版本可能存在与Jenkins核心(2.375.1)适配的步骤恢复逻辑问题。建议升级到最新稳定版(在Jenkins插件管理中搜索“PowerShell”即可操作),新版本通常会修复这类兼容性问题。
3. 确保Windows节点重启后自动重连
检查Windows内置节点的配置:
- 确认节点以Windows服务形式运行,设置为“随系统自动启动”,确保节点崩溃重启后能自动连接到Jenkins主节点。
- 若使用JNLP连接方式,检查节点的连接配置是否正确,避免因连接失败导致Pipeline找不到可用节点而停滞。
4. 验证脚本的可重入性
确保myscript.ps1及其中运行的Python程序支持重入执行——即中断后重新启动不会引发资源冲突、数据重复等问题。如果脚本本身无法处理重复执行,即使Jenkins恢复步骤,也可能出现异常,需在脚本中添加幂等性处理(如检查进程是否已存在、数据是否已处理完成等)。
补充说明
虽然JENKINS-43587已修复主节点重启后的Pipeline整体恢复问题,但特定步骤(如pwsh)的恢复可能受插件版本、节点配置等因素影响,上述方案覆盖了常见的修复场景。
内容的提问来源于stack exchange,提问作者bouvierr
相关产品推荐
相关产品推荐

