jenkins Windows slave连接server报错,slave-agent.jnlp: 403 Forbidden

为jenkins添加Windows slave时,通过执行java -jar命令启动slave节点比较常见,最近jenkins更新了安全策略,不再允许匿名用户远程连接jenkins服务器或者触发API,所以在执行java-jar命令时,可能会报一下错误:

Failing to obtain http://XXXXX/computer/XXXXXXX/slave-agent.jnlp
java.io.IOException: Failed to load http://XXXXX/computer/XXXXX/slave-agent.jnlp: 403 Forbidden
at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:496)
at hudson.remoting.Launcher.run(Launcher.java:322)
at hudson.remoting.Launcher.main(Launcher.java:283)

原因如上所表,jenkins不在允许匿名用户登录,即使已经给提供了secret key,必须使用用户名密码才行,如下方式:

    java -jar agent.jar -jnlpUrl http://jenkins.XXX.com/manage/computer/10.10.10.10/jenkins-agent.jnlp -jnlpCredentials USER:PASSWORD -workDir "C:\Users\XXX\jenkins"

使用上面的命令,将自己的用户名密码配置进去,即可启动成功,slave与master建立连接。
使用API远程触发jenkins job构建,也有所不同,需使用如下请求:

    public static void triggerJenkinsJob(String params) {
        try {
            HttpRequest request = HttpRequest.get("http://jenkins.XXXX.com/buildByToken/buildWithParameters")
                .query("job", "XXX_job")
                .query("token", "job_trigger_XXX_token")
                .query("some_param1", "XXXX")
                .query("some_param2", "XXX");
            HttpResponse response = request.send();
            logger.info("send ding: {}", response.bodyText());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
版权声明

本站文章、图片、视频等(除转载外),均采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0),转载请注明出处、非商业性使用、并且以相同协议共享。

© 空空博客,本文链接:https://www.yeetrack.com/?p=1484