首页 > 解决方案 > Jenkins 升级 - TFS 代理未能将构建作业排队

问题描述

我们正在使用 TFS 代理来触发 Jenkins 中的构建作业。因此,从拉取请求中,是否可以直接开始构建到 Jenkins 中。

一切正常,直到将 Jenkins 升级到 2.236 版本。在早期的 Jenkins 版本中,有一个选项可以禁用A cross site request forgeryunder CSRF 插件,但在 2.236 版本中,不再有这样的选项。

Jenkins 上的问题跟踪器(https://issues.jenkins-ci.org/browse/JENKINS-61375)说,最好将客户端配置为在 HTTP 身份验证中使用 API 令牌。另一种选择是crumb session key与 HTTP 请求一起使用。就像是 -

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

但是,在配置 TFS 代理时,我没有看到任何使用 API 密钥或会话密钥的字段。

这里有哪些选择?如何解决这个问题呢?

标签: jenkinstfs

解决方案


出现此错误是因为较旧的 Jenkins 版本(可能 < 2.176)可以选择取消选中Prevent Cross Site Request Forgery exploits. 较新的 Jenkins 没有这样的选项,但在上述情况下(TFS 代理触发 Jenkins 中的构建作业),TFS 代理中没有设置来播放crumb session-id.

将相应的环境变量设置为 false 也不是可接受的解决方案。

Strict Crumb Issuer plugin将是这里的解决方案。

安装它,并将其设置CSRF protection为 - [取消选中Check the session ID]

在此处输入图像描述


推荐阅读