3

以下の hello-spinnaker の例で説明されているように、すべての手順を完了しました。AWS スピンネーカー イメージを使用して、AWS でスピンネーカーを直接構成しました。

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

上記の例に示されているように、サンプル パイプラインを作成しようとしていますが、最初のステップでトリガーを作成して jenkins を選択すると、ジョブが読み込まれず、ブラウザーでエラーが発生します。

GET http://localhost:8084/v2/builds/Jenkins/jobs 429 (リクエストが多すぎます)

実際の問題は、レトロフィットが jenkins getjobs からの応答を JobList クラスにマップしようとしているときに、jenkins 応答 xml で属性 _class を見つけ、JobList groovy クラスに存在しないように見えます。以下は、問題を見つけようとした方法です。

1) AWS Spinnaker インスタンスにログイン

2) Gate サービスはポート 8084 で公開されます。
curl 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) ポート 8088 で Igor サービスが公開されます。
curl 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 のログを確認すると、getprojects by jenkins のポーリング中に例外がいくつか発生しています。

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 に接続し、spinnaker コードで行われているジョブを取得しますhttps://github.com/spinnaker/igor/blob/master/igor-web/src/main/groovy/com/netflix/spinnaker/igor/ジェンキンス/クライアント/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','password'))
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>

したがって、ジェンキンスの応答には_class属性があるため、レトロフィットはこの行でエラーをスローしていますhttp://grepcode.com/file/repo1.maven.org/maven2/com.squareup.retrofit/retrofit/1.9.0/retrofit /RestAdapter.java#383

ジェンキンの互換性のあるバージョンのように見えるため、これをすばやく修正する方法を確認したかったのです。

4

2 に答える 2

1

Spinnaker 1.8.5 でも同様の問題が発生しています。ジェンキンスのURLをからに再フォーマットする必要がmyjenkins.server.com:8080ありhttp://myjenkins.server.com/、問題が修正されました。

于 2018-08-06T20:30:38.040 に答える
0

これは、以降のバージョンの jenkins API に関するバグです。互換性のある最後のバージョンは 2.2 だと思います。内部では 1.6 を実行しています。

于 2016-05-19T18:06:00.527 に答える