jenkins - 尝试更新一些旧 Jenkins 作业的配置时出现 ERR_CONNECTION_RESET 错误
问题描述
构建服务器上的一些较旧的 Jenkins 作业无法通过 Web GUI 更新。我可以使用诸如作业配置历史插件之类的东西回滚到较旧的配置,但正常更新会导致它在浏览器底部显示一些内容,例如Uploading (79%)
,进度高达 9x%,最终它在 Chrome 中出现错误ERR_CONNECTION_RESET
。
它不适用于其他旧工作,只有一小部分。我跑了他们的差异,config.xml
没有什么突出的。
我也已经卸载了 MultiSCM 插件,这显然在过去引起了类似的问题。
当这些更新失败时,我不会在 Jenkins 日志本身中收到任何警告或错误。
我还将 Jenkins 更新为最新的 LTS 以及所有插件。
知道发生了什么或如何解决它吗?
在 JavaMelody 中,它看到 POST 失败,但没有说明原因:
解决方案
由于不知道错误的来源,因此调试起来非常烦人。jenkins 日志在FINEST
和之间没有任何帮助SEVERE
。在与我们的 devops 负责人合作了几天后,我们在系统或服务器设置上找不到任何改变行为的东西。
我在 GitHub 上遇到了一个有类似问题的人,他说对于他们的一个插件,如果有一个额外的EOL
符号,它就会中断。这让我想到,这可能是插件输入的解析错误吗?
首先,我禁用了所有不是构建步骤的东西。这没有解决任何问题。然后我开始在构建步骤部分一次删除一种插件类型,并最终将其缩小到Windows Batch Command
构建步骤。通过反复试验,我确定它是 3 批中的 1 批,并将其调试到最后一行。这是批次中隐藏的部分:
@echo off
SetLocal EnableDelayedExpansion EnableExtensions
REM ...
call MsBuild.exe %SLN_FILE% /p:Configuration="%Build_Configuration%" /p:Platform="x86" -m -nodeReuse:false>nul 2>&1
if not "%errorlevel%"=="0" (
echo Preliminary build initially failed. Running with console output next
call MsBuild.exe /t:rebuild %SLN_FILE% /p:Configuration="%Build_Configuration%" /p:Platform="x86" -m -nodeReuse:false
if not "!errorlevel!"=="0" echo Preliminary x86 build failed. Exiting early... & exit /b 1
)
REM ...
exit /b 0
戴上我的解析错误思维帽,我重构了这个,
if not "!errorlevel!"=="0" echo Preliminary x86 build failed. Exiting early... & exit /b 1
入此,
if not "!errorlevel!"=="0" (
echo Preliminary x86 build failed
echo Exiting early
exit /b 1
)
它又开始工作了。因此,这可能是 Jenkins 消费端的解析错误,但实际的错误来源可能是Windows Batch Command
模块,当它的输入被格式化以转义特殊字符时。
供参考!:)
推荐阅读
- php - 如何搜索数组并存储其父项。
- java - 无法将图像的 URI 路径放入 Android Studio 中的 imageview
- r - 用于替换和修改变量的 dplyr 工作流程
- powershell - 将参数传递给 Powershell 中的应用程序调用
- java - 响应后如何关闭spring集成tcp连接
- unit-testing - 对自定义 CLion 插件进行单元测试
- javascript - 蓝色窗口在 3 秒后消失
- java - 通过更改列表类型进行 Android LiveData 转换
- java - Java 到 Kotlin 以不同的方法访问类特定的变量
- laravel - 方法链接不存在 - laravel 5.4