我们在Windows上的一些Jenkins代理通过-jnlpCredentials
连接:
<arguments>-Xrs -Xms256m -Xmx2048m -jar "%BASE%agent.jar" -noCertificateCheck
-jnlpUrl https://our-ciserver.org/jenkins/computer/bla/slave-agent.jnlp
-jnlpCredentials thejnlpuser:thesecret</arguments>
这曾经工作得很好,但最近重启这样的从机时,它不能再连接,报告:
Failing to obtain https://our-ciserver.org/jenkins/computer/bla/slave-agent.jnlp
java.io.IOException: Failed to load https://our-ciserver.org/jenkins/computer/bla/slave-agent.jnlp: 403 Forbidden
at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:499)
at hudson.remoting.Launcher.run(Launcher.java:325)
at hudson.remoting.Launcher.main(Launcher.java:283)
Waiting 10 seconds before retry
用户thejnlpuser
是注册的Jenkins用户,我可以以该用户的身份交互登录。身份验证通过Active Directory插件进行。
现在,很明显,当Jenkins验证此访问权限时,有些东西不起作用--但我如何才能找出是什么??
我尝试在/jenkins/log
记录器中摆弄系统记录器,添加了hudson.plugins.active_directory
的记录和其他一些尝试和错误。
但我如何才能让Jenkins报告这里到底出了什么问题呢?
- 如何找到相关的记录器?
- 如何找到相关的日志记录级别?
1条答案
按热度按时间2eafrhcq1#
此处列出的错误是
403 Forbidden
而不是401 Unauthorized
--因此寻找可能的AD/权限问题可能不会导致解决方案。诊断JNLP错误后,应该继续使用给定的凭据查询Actualjnlp文件URL,而不仅仅是尝试登录:
这导致了解决方案:用户一切都很好,除了它的代理权限在Jenkins设置的权限矩阵中已被撤销,因此浏览jnlp文件会立即获得403禁用状态,其中包含一个非常有帮助的页面内容,告诉该用户没有获得jnlp文件的代理权限。
要查询jnlp文件,用户需要以下权限:
因此,步骤如下: