Spinnaker Jenkins Integration无法从Jenkins获取作业

时间:2016-05-09 11:58:45

标签: exception jenkins spinnaker

我们已完成以下hello-spinnaker示例中描述的所有步骤。我们已使用AWS spinnaker镜像直接在AWS中配置spinnaker。

www.spinnaker.io/docs/hello-spinnaker。

我正在尝试创建一个示例管道,如上例所示。但是当我在第一步创建触发器并选择jenkins时,作业没有被填充,并且在浏览器中遇到错误。

获取http://localhost:8084/v2/builds/Jenkins/jobs 429(请求过多)

实际问题看起来虽然改造试图将jenkins getjobs的响应映射到JobList类,但它在jenkins响应xml中找到了一个属性_class,并且在JobList groovy类中没有。我们是如何尝试找到问题的

1)登录AWS Spinnaker实例

2)门服务在端口8084暴露。
卷曲http://localhost:8084/v2/builds/Jenkins/jobs

{"failureCause":"retrofit.RetrofitError: 429 Too Many Requests","error":"Too Many Requests","message":"429 Too Many Requests","status":429,"url":"http://localhost:8088/jobs/Jenkins","timestamp":1462793944530}

3)Igor服务在8088端口暴露 卷曲http://localhost:8088/jobs/Jenkins

{"fallbackException":"java.lang.UnsupportedOperationException: No fallback available.","failureType":"COMMAND_EXCEPTION","failureCause":"retrofit.converter.ConversionException: org.simpleframework.xml.core.AttributeException: Attribute '_class' does not have a match in class com.netflix.spinnaker.igor.jenkins.client.model.JobList at line 1","error":"Hystrix Failure","message":"jenkins-Jenkins-getJobs failed and no fallback available.","status":429,"timestamp":1462793896853}

当我签入igor日志时,jenkins民意调查在getproject期间发生的例外情况很少

Caused by: retrofit.converter.ConversionException: org.simpleframework.xml.core.AttributeException: Attribute '_class' does not have a match in class com.netflix.spinnaker.igor.jenkins.client.model.ProjectsList at line 2
at retrofit.converter.SimpleXMLConverter.fromBody(SimpleXMLConverter.java:38)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:367)
... 39 common frames omitted
Caused by: org.simpleframework.xml.core.AttributeException: Attribute '_class' does not have a match in class com.netflix.spinnaker.igor.jenkins.client.model.ProjectsList at line 2

4)连接到jenkins并在大三角帆代码https://github.com/spinnaker/igor/blob/master/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/JenkinsClient.groovy中完成工作

resp = requests.get(' http://jenkinserverip:8080/api/xml?tree=jobs[name,jobs[name,jobs[name,jobs[name,jobs[name,jobs[name,jobs[name,jobs[name,jobs[name,jobs[name]]]]]]]]]]',auth =(' admin','密码')) print resp.text

<hudson _class='hudson.model.Hudson'><job _class='hudson.model.FreeStyleProject'><name>Hello Build</name></job><job _class='hudson.model.FreeStyleProject'><name>Hello Poll</name></job></hudson>

因此,当jenkins响应具有_class属性时,改造会在此行http://grepcode.com/file/repo1.maven.org/maven2/com.squareup.retrofit/retrofit/1.9.0/retrofit/RestAdapter.java#383

引发错误

我想看看我们怎么能快速解决这个问题,因为它看起来像jenkins的兼容版本。

2 个答案:

答案 0 :(得分:0)

这是jenkins api在后期版本中的一个错误。我相信2.2是最后一个兼容版本,我们在内部运行1.6。

答案 1 :(得分:0)

我在大三角帆1.8.5中看到了类似的问题。我不得不将jenkins网址从pointer.y = bounds.height - pointer.y + this._offset.top重新格式化为myjenkins.server.com:8080,它纠正了该问题。