我想给Jenkins添加一个新的slave。当我遵循Jenkins UI时,它给了我下面的命令
java -jar agent.jar -jnlpUrl http://<jenkins_url>/computer/<slave_name>/slave-agent.jnlp -secret 4b59708a20e155c8ccb39f1fb046be09f72c712ed839401195c475d5fdb2b0e5
当我尝试执行该命令时,其输出如下:
Exception in thread "main" java.lang.IllegalArgumentException: IV buffer too short for given offset/length combination
at javax.crypto.spec.IvParameterSpec.<init>(IvParameterSpec.java:80)
at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:515)
at hudson.remoting.Launcher.run(Launcher.java:325)
at hudson.remoting.Launcher.main(Launcher.java:283)
请问您能帮我解决这个错误吗?任何帮助将不胜感激。先谢了。
致上最好的问候。
2条答案
按热度按时间vaqhlq811#
我回顾了Jenkins代码和Jenkins代理代码(远程处理)中IV长度的设置,似乎到处都是16字节。
curl
来获取slave-agent.jnlp URL($JENKINS_URL/computer/$node_name/slave-agent.jnlp
),我发现我认为应该使用的http://URL只返回“302 Found”,其中“location”头设置为相同的URL,但带有https://。curl
这样做,我看到了关于Jenkins中缺少权限的消息(读取,然后连接代理)。为匿名用户添加这些(在$JENKINS_URL/configureSecurity
上,使用基于矩阵的安全性)为我解决了这个问题。或者说,它把它变成了另一个问题,这是“连接拒绝”。我又花了一段时间才弄清楚-对于在容器中运行的Jenkins master-在全局安全配置中,“入站代理的TCP端口”必须设置为容器内部端口,而在节点配置中,“隧道连接通过”必须设置为外部端口。
我希望我的调试练习至少部分也适用于您的上下文。
alen0pnh2#
对我来说,这个确切的错误是因为我用Jenkins从http转移到https,并在Java服务的启动中添加了启动参数--httpsRedirectHttp(我在Windows上运行)。这导致了一些问题,通过修改主节点上的系统属性“Jenkins URL”来解决,以包括“https://”而不是以前的“http://"。
在那之后,我在我的节点上下载了新的agent.jar,并按照说明中的说明运行它,它顺利地工作了。希望能帮上忙。