HttpResponseException:在试图通过java调用jenkins中的create job时被禁止
我正在使用此maven库连接到Jenkins:HttpResponseException:在试图通过java调用jenkins中的create job时被禁止,java,jenkins,jenkins-plugins,java-client,Java,Jenkins,Jenkins Plugins,Java Client,我正在使用此maven库连接到Jenkins: <dependency> <groupId>com.offbytwo.jenkins</groupId> <artifactId>jenkins-client</artifactId> <version>0.3.8</version> </dependency> config.xml: <?xml version="1.0" enco
<dependency>
<groupId>com.offbytwo.jenkins</groupId>
<artifactId>jenkins-client</artifactId>
<version>0.3.8</version>
</dependency>
config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<actions />
<description>test job from java api</description>
<keepDependencies>false</keepDependencies>
<properties />
<scm class="hudson.scm.NullSCM" />
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers />
<concurrentBuild>false</concurrentBuild>
<builders />
<publishers />
<buildWrappers />
<crumb>xxxxxxx</crumb>
<crumbRequestField>Jenkins-Crumb</crumbRequestField>
</project>
调用getJobXml()时,我也遇到异常:
我很晚才回答你的问题。但发布此消息是为了帮助他人 我花了两个多的时间研究这个问题,但最终还是用Jenkins客户端创建了Jenkins作业。为了测试这一点,我编写了一个简单的Spring Boot
CommandLineRunner
程序,从main()
调用
jenkinserver-jenkins=新的jenkinserver(新的URI(“http://localhost:6565/“管理员”、“管理员”);
Map jobs=jenkins.getJobs();
System.out.println(“调用运行方法”+jenkins.getJob(“bp-jenkins1”);
createJob(“JobOffByTwo”,getConfigXML(),true);
`
String getConfigXML()
方法返回在Jenkins中创建作业所需的示例config.xml内联xml
我希望这会有帮助
try {
jServer.createJob("test-job", "src/main/resources/config.xml", true);
} catch (Exception e) {
e.printStackTrace();
}
<?xml version="1.0" encoding="UTF-8"?>
<project>
<actions />
<description>test job from java api</description>
<keepDependencies>false</keepDependencies>
<properties />
<scm class="hudson.scm.NullSCM" />
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers />
<concurrentBuild>false</concurrentBuild>
<builders />
<publishers />
<buildWrappers />
<crumb>xxxxxxx</crumb>
<crumbRequestField>Jenkins-Crumb</crumbRequestField>
</project>
org.apache.http.client.HttpResponseException: Forbidden
at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
at com.offbytwo.jenkins.client.JenkinsHttpClient.post_xml(JenkinsHttpClient.java:375)
at com.offbytwo.jenkins.JenkinsServer.createJob(JenkinsServer.java:389)
at com.offbytwo.jenkins.JenkinsServer.createJob(JenkinsServer.java:359)
at com.xxx.App.main(App.java:34)
Exception in thread "main" org.apache.http.client.HttpResponseException: Forbidden
at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
at com.offbytwo.jenkins.client.JenkinsHttpClient.get(JenkinsHttpClient.java:171)
at com.offbytwo.jenkins.JenkinsServer.getJobXml(JenkinsServer.java:515)
at com.offbytwo.jenkins.JenkinsServer.getJobXml(JenkinsServer.java:503)
JenkinsServer jenkins = new JenkinsServer(new URI("http://localhost:6565/"), "admin", "admin");
Map<String, Job> jobs = jenkins.getJobs();
System.out.println("Calling run method " + jenkins.getJob("bp-jenkins1"));
jenkins.createJob("JobOffByTwo", getConfigXML(), true);