因为公司需要,所以使用 jenkins-client做远程构建,但是在输入了正确的账号密码以及jenkins的url之后,调用构建出现403
代码如下
try { JenkinsServer jenkins = new JenkinsServer(new URI("JENKINS_URL"), JENKINS_USERNAME, JENKINS_PASSWORD); if (jenkins.isRunning()) { jenkins.getJob(JENKINS_JOB).build(); System.out.println(jenkins.getJob(JENKINS_JOB).getLastBuild().details().getResult()); } } catch (Exception e) { e.printStackTrace(); }
执行之后报
status code: 403, reason phrase: Forbidden
研究了一下发现了是jenkins的CSRF机制导致的,但是由于公司所用的jenkins版本较高,默认不支持关闭CSRF,所以需要在jenkins 控制台中手动关闭CSRF。
解决方案为在jenkins控制台中执行以下代码。
// 允许禁用 hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true // 强制启用 hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = false