You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows EC2上Jenkins agent批处理启动失败无法自动重连

问题根因排查

手动执行命令正常、批处理执行报404的常见原因如下:

  • 批处理内的jnlpUrl参数不完整/格式错误
    正确的jnlp地址格式应为http://<Jenkins控制器IP或域名>/computer/<代理节点名称>/jenkins-agent.jnlp,需和报错中返回的请求地址匹配。如果批处理内漏写了协议头(http/https)、节点名称和Jenkins控制器配置不一致、保留了占位符的<>符号,都会导致参数解析错误触发404。
  • JNLP加密参数不匹配
    报错中请求的地址自动拼接了?encrypt=true参数,如果Jenkins控制器上对应节点的配置中没有开启JNLP加密,该请求就会返回404。
  • 批处理执行时机过早
    实例开机后网络还未初始化完成、EC2安全组/网络策略未生效时,批处理就提前运行,也会抛出资源找不到错误。
  • 权限不匹配
    批处理如果在开机启动时以system账户运行,需要确认C:\jenkins目录、agent.jar文件对system账户开放了读取/写入权限,否则也会加载失败。

解决方案

步骤1:修正批处理文件内容

确认批处理内容和你手动执行的完全一致,参考正确格式:

@echo off
:: 切换到agent.jar所在目录
cd /d C:\jenkins
java -jar agent.jar -jnlpUrl http://<替换为Jenkins控制器实际地址>/computer/<替换为节点实际名称>/jenkins-agent.jnlp -secret <替换为节点实际密钥> -workDir "C:\jenkins"
:: 若加密参数不匹配,可在jnlpUrl末尾拼接&encrypt=false,示例:
:: java -jar agent.jar -jnlpUrl http://xxx/computer/xxx/jenkins-agent.jnlp&encrypt=false -secret xxx -workDir "C:\jenkins"

注意替换所有占位符内容,不要保留<>符号。

步骤2:配置为Windows延迟启动服务

直接把批处理放入启动文件夹容易出现网络未就绪问题,推荐封装为系统服务:

  • 用nssm或sc工具将上述批处理封装为Windows系统服务
  • 打开服务管理界面(运行输入services.msc),找到Jenkins Agent服务,右键属性:
    • 「常规」标签页:启动类型选择「自动(延迟启动)」
    • 「恢复」标签页:设置三次失败后都执行「重新启动服务」操作
    • 「登录」标签页:确认使用「本地系统账户」运行,勾选「允许服务与桌面交互」

步骤3:验证配置

  • 手动启动创建的服务,查看Jenkins控制器上节点是否正常上线
  • 重启EC2实例,等待3-5分钟后确认节点自动上线即可

内容的提问来源于stack exchange,提问作者NJ24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:18:02