如何配置Jenkins Windows代理以适配Squish UI测试?
解决Jenkins Windows代理无桌面会话下的Squish UI测试问题
方案1:将Jenkins代理注册为带桌面权限的Windows服务
- 通过Windows服务让代理运行在带交互桌面的会话中:
- 使用
sc命令创建服务,指定有权限的本地用户:sc create JenkinsAgent binPath= "java -jar C:\path\to\agent.jar -jnlpUrl <你的JNLP地址> -secret <节点密钥>" obj= ".\本地管理员账户" password= "账户密码" type= own start= auto displayname= "带桌面的Jenkins代理" - 打开服务属性的「登录」选项卡,勾选「允许服务与桌面交互」
- 重启服务,此时代理绑定到用户桌面会话,Squish可正常执行UI测试
- 使用
方案2:通过自动登录+任务计划启动代理
- 利用Windows用户登录后的桌面会话启动代理:
- 配置Windows自动登录(需确保机器处于安全环境)
- 创建任务计划,触发条件设为「用户登录时」,执行命令:
java -jar C:\path\to\agent.jar -jnlpUrl <你的JNLP地址> -secret <节点密钥> - 任务设置中指定运行在当前用户会话,确保代理关联桌面
方案3:绕过JNLP网络重定向与认证限制
- 针对网络重定向或认证失败问题,直接使用节点原生JNLP地址并配置代理参数:
- 使用Jenkins节点的直接JNLP链接,避免重定向:
java -jar agent.jar -jnlpUrl http://<Jenkins服务器IP>:8080/computer/<节点名称>/slave-agent.jnlp -secret <节点密钥> -workDir "C:\Jenkins\工作目录" - 若存在代理服务器认证,添加JVM代理参数:
java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 -jar agent.jar -jnlpUrl <你的JNLP地址> -secret <节点密钥>
- 使用Jenkins节点的直接JNLP链接,避免重定向:
关键注意事项
- Squish UI测试必须依赖活跃的用户桌面会话,Windows默认的Session 0服务会话无法满足,必须绑定到Session 1及以上的交互会话
- 确保运行代理的用户账户拥有本地登录、服务运行、访问Squish及测试资源的权限
内容的提问来源于stack exchange,提问作者PrkwyDrv
相关产品推荐
相关产品推荐

