ERR_CONNECTION_RESET ошибка при попытке обновить конфигурацию некоторых старых заданий Jenkins - PullRequest
0 голосов
/ 04 марта 2020

Некоторые старые задания Jenkins на сервере сборки нельзя обновить через Интернет GUI. Я могу откатиться к более старым конфигурациям, используя такие вещи, как плагин истории конфигурации заданий, но обычные обновления заставляют его говорить что-то в нижней части браузера, например, Uploading (79%), прогрессировать до 9x% и в конечном итоге он выдает ошибку в Chrome с ERR_CONNECTION_RESET.

Он не делает это для других старых работ, только маленькая горстка. Я проверил различия их config.xml и ничего не выделялось.

Я также уже удалил плагин MultiSCM, который, по-видимому, вызывал аналогичную проблему в прошлом.

Я не получаю никаких предупреждений или ошибок в самом журнале Jenkins при сбое этих обновлений .

Я также обновил Jenkins до последней версии LTS и всех плагинов.

Есть идеи, что происходит или как это исправить?

В JavaMelody он видит сбой POST, но не указывает, почему:

1 Ответ

0 голосов
/ 07 марта 2020

Это было очень неприятно для отладки из-за незнания источника ошибки. Ни один из журналов Дженкинса не был полезен между FINEST и SEVERE. После работы с нашим лидером devops в течение нескольких дней мы не смогли найти ничего в системе или настройках сервера, которые бы изменили поведение.

Я столкнулся с кем-то, у кого была похожая проблема на GitHub, и сказал, что для одного из их плагины, он сломался бы, если бы был дополнительный символ EOL. Это заставило меня задуматься, может ли это быть ошибкой синтаксического анализа для ввода плагина?

Сначала я отключил все, что не было шагом сборки. Это ничего не исправило. Затем я начал удалять по одному типу плагинов за раз в разделе «Шаг сборки» и в итоге сузил его до Windows Batch Command шагов сборки. Методом проб и ошибок я определил, что это был 1 из 3 пакетов, и отладил его до одной строки. Это была та часть пакета, где она была спрятана:

@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

в this,

if not "!errorlevel!"=="0" (
    echo Preliminary x86 build failed
    echo Exiting early
    exit /b 1
)

И он снова начал работать. Так что это, вероятно, ошибка синтаксического анализа на стороне, потребляющей Jenkins, но фактическая причина возникновения ошибки - это, вероятно, модуль Windows Batch Command, когда его входные данные форматируются для экранирования специальных символов.

FYI! :)

...