我尝试通过JNLP命令行启动我的Jenkins slave,这样我就可以将命令放入任务调度器中。然而,只有当我使用Jenkins生成的密钥使用-secret选项时,我才会面临身份验证问题。如果我使用与Jenkins相同的用户名密码传递-auth选项,则可以正常工作。
java -jar slave.jar -jnlpUrl http://<jenkins host>:<port>/jenkins/computer/<Slave name>/slave-agent.jnlp -secret <secret_key> -workDir "C:\Jenkins\Robot"
字符串
注意:我尝试执行的命令是从Jenkins页面复制的。
它给出以下错误:
org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDirINFO: Using C:\Jenkins\Robot\remoting as a remoting work directory Both error and output logs will be printed to C:\Jenkins\Robot\remoting Not use http_proxy property or environment variable which is invalid: unknown protocol: one.proxy.att.com Failing to obtain http://<host:port>/jenkins/computer/<job>/slave-agent.jnlp?encrypt=true
java.io.IOException: Failed to load http://<host:port>/jenkins/computer/<job>//slave-agent.jnlp?encrypt=true: 401 Unauthorized
at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:485)
at hudson.remoting.Launcher.run(Launcher.java:316)
at hudson.remoting.Launcher.main(Launcher.java:277)
Waiting 10 seconds before retry
型
但是,如果我按如下方式更改命令,它将成功运行。
java -jar slave.jar -jnlpUrl http://<jenkins host>:<port>/jenkins/computer/<Slave name>/slave-agent.jnlp/slave-agent.jnlp -auth <user>:<pass> -workDir "C:\Jenkins\Robot"
型
我不能在启动文件中保留我的凭据,因为这将保留在公共共享存储库中。请帮助。
2条答案
按热度按时间2izufjch1#
我认为您的问题可能来自安全管理。您是否在全局安全中为JNLP代理启用了TCP端口?
转到Manage Jenkins > Global Security,
Enable TCP port for JNLP agents
,选择Fixed
并填写您在jnlpUrl中使用的端口,然后选择Java Web Start Agent Protocol/4
并保存您的配置。更多文档here。
kzipqqlq2#
我也遇到过类似的问题。我通过允许匿名访问Jenkins解决了这个问题(该选项在
Kerberos properties
页面的Kerberos properties
部分中可用-我们使用Jenkins的Single Sign-On插件进行Jenkins身份验证,所以不确定其他身份验证插件如何工作)。我还建议限制匿名访问的范围,如果您启用它。