Обновление Jenkins - агенту TFS не удалось поставить задание на сборку в очередь - PullRequest
0 голосов
/ 16 июня 2020

Мы используем агент TFS для запуска задания сборки в Jenkins. Так что из запроса на перенос можно ли начать сборку непосредственно в Jenkins.

Все работало нормально, пока не обновили Jenkins до версии 2.236. В более ранней версии Jenkins была возможность отключить A cross site request forgery в плагине CSRF, но в версии 2.236 такой опции больше нет.

Средство отслеживания проблем на Jenkins (https://issues.jenkins-ci.org/browse/JENKINS-61375) говорит, что лучше настроить клиент для использования токена API при аутентификации HTTP. Другой вариант - использовать crumb session key с HTTP-запросом. Что-то вроде -

{"_class":"hudson.security.csrf.DefaultCrumbIssuer",
"crumb":"8f1aa10c71ee8ac841fbda43196374e6f91bd7221298a258acb7c05e1aeb0968",
"crumbRequestField":"Jenkins-Crumb"}

Но при настройке агента TFS я не вижу поля для использования ключа API или ключа сеанса.

Какие здесь варианты? Как решить эту проблему?

1 Ответ

0 голосов
/ 16 июня 2020

Эта ошибка возникает из-за того, что в более старой версии Jenkins (вероятно, <2.176) есть возможность снять отметку с <code>Prevent Cross Site Request Forgery exploits. Более новый Jenkins не имеет такой опции, но в описанной выше ситуации (агент TFS для запуска задания сборки в Jenkins) в агенте TFS нет настроек для воспроизведения GET / REQUEST для crumb session-id.

Установка соответствующая переменная среды, равная false, также не является приемлемым решением.

Здесь Strict Crumb Issuer plugin будет решением.

Установите его и установите CSRF protection как - [снимите отметку Check the session ID]

enter image description here

...