2013-06-07 5 views
0

Jenkins API에 POST를 제출하여 새 작업을 작성하려고합니다. API 문서를 읽고 Postman을 사용하여 특정 요청을 작성합니다. 내가 요청을 만들 때공백 오류를 반환하는 Jenkins/Hudson createItem API 요청

, 서버는 ERROR 500 반환하고 다음과 같은 오류 :

<html><head><title>Error 500</title></head> 

상태 코드 : 500

예외 : /var/lib/jenkins/jobs/Tes234t6.dev/를 읽을 수 없습니다 config.xml에
스택 트레이스 : 2013

필자

hudson.util.IOException2: Unable to read /var/lib/jenkins/jobs/Tes234t6.dev/config.xml 
    at hudson.XmlFile.read(XmlFile.java:145) 
    at hudson.model.Items.load(Items.java:220) 
    at hudson.model.ItemGroupMixIn.createProjectFromXML(ItemGroupMixIn.java:235) 
    at hudson.model.ItemGroupMixIn.createTopLevelItem(ItemGroupMixIn.java:167) 
    at jenkins.model.Jenkins.doCreateItem(Jenkins.java:2876) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288) 
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151) 
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90) 
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:677) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:770) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:583) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:214) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) 
    at winstone.ServletConfiguration.execute(ServletConfiguration.java:248) 
    at winstone.RequestDispatcher.forward(RequestDispatcher.java:333) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) 
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) 
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) 
    at winstone.RequestDispatcher.forward(RequestDispatcher.java:331) 
    at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227) 
    at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: com.thoughtworks.xstream.io.StreamException: : only whitespace content allowed before start tag and not - (position: START_DOCUMENT seen -... @1:1) 
    at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:124) 
    at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:148) 
    at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:141) 
    at com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:118) 
    at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:103) 
    at com.thoughtworks.xstream.io.xml.XppReader.<init>(XppReader.java:63) 
    at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:54) 
    at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:65) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:925) 
    at hudson.XmlFile.read(XmlFile.java:143) 
    ... 66 more 
Caused by: org.xmlpull.v1.XmlPullParserException: only whitespace content allowed before start tag and not - (position: START_DOCUMENT seen -... @1:1) 
    at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1519) 
    at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395) 
    at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093) 
    at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:109) 
    ... 75 more 


금 6월에 스테이플러에 의해 생성 된 07 동부 서머 타임 10시 47분 55초 내 죄수를 살펴 촬영 fig.xml 파일이 있으며 파일의 맨 위에 공백이 없습니다. 그것 이외에, 나는 그것이 무엇에 대해 이야기하고 있는지 확신하지 못한다. 나는 봤지만 그걸로 보았지만 CLI 밖에서이 API를 사용하는 것과 관련된 어떤 것도 발견하지 못했다. 어떤 사람도 이것을 성공적으로 또는 포인터로 수행하는 경험이 있습니까?

POST /createItem?name=Tes234t6.dev HTTP/1.1 
Host: XXX.XXX.XXX.XXX:8080 
Content-Type: text/xml 
Authorization: Basic cm9vdDpjcm9zYnlhZG0xbg== 
Cache-Control: no-cache 

----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="config.xml"; filename="config.xml" 
Content-Type: text/xml 


----WebKitFormBoundaryE19zNvXGzXaLvS5C 

답변

0

그래서 "config.xml 파일은"당신이 실제로 파일을 전송이 arent 게시 할 말을하지만, XML 데이터를 게시 젠킨스의 API에도 불구하고 밝혀 :

내가 API로 제작하고있는 POST 요청입니다 그 자체.

내가 한 방식은 크롬에 Postman 플러그인을 사용하고 내 config.xml 파일의 내용을 RAW 입력에 직접 추가하는 것이 었습니다. 이것은 나를 위해 일했다.

희망을 통해 일부 다른 사람들은 다소 불만을 호소합니다.

0

나는 또한이 문제에 비틀 거 렸지만 해결책이 우리에게 효과가 없었습니다. 그래서, 누군가가이 문제를 구글 사이트에서 찾으면 다른 해결책이 될 수 있습니다.

우리는 젠키스 (AJP를 통해 연결됨) 앞에 아파치을 가지고있었습니다. Jeknins 버전 1.534 (또는 그 이하)을 사용하면 모든 것이 잘 동작합니다. 1.535 이상으로 업그레이드 한 후 REST-API를 통해 작업을 만들려고 할 때 위에서 언급 한 오류가 발생했습니다. 이것은 항상 발생하지 않았지만 일자리 창출 중 20 %에서 발생했습니다.

이것은 밝혀졌지만 REST-API가 Apache를 통해 호출 된 다음 ajp를 사용하여 Jeknins로 전달 된 경우에만 발생했습니다. 해결책은 Jenkins에 대한 REST 호출을 직접 작성하는 것이 었습니다.


참고 : jenkins 1.535 and above is using Jetty 8.