2012-02-28 9 views
1

にMavenのインストール(または更新)中に、時折失敗構築マスター/マルチスレーブ設定を使用して、ジェンキンスで構築します。これらはほとんど実行罰金を構築しますが、すべては今、もう一度私は実行するスレーブのためのコンソール出力で、この不可解なエラーを取得し、ビルドが死ぬ:ジェンキンスは、私はいくつかのMavenを実行しているスレーブキュータ

FATAL: Failed to parse /var/lib/jenkins/updates/hudson.tasks.Maven.MavenInstaller into JSON 
hudson.util.IOException2: Failed to parse /var/lib/jenkins/updates/hudson.tasks.Maven.MavenInstaller into JSON 
    at hudson.model.DownloadService$Downloadable.getData(DownloadService.java:216) 
    at hudson.tools.DownloadFromUrlInstaller$DescriptorImpl.getInstallables(DownloadFromUrlInstaller.java:149) 
    at hudson.tools.DownloadFromUrlInstaller.getInstallable(DownloadFromUrlInstaller.java:54) 
    at hudson.tools.DownloadFromUrlInstaller.performInstallation(DownloadFromUrlInstaller.java:63) 
    at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:61) 
    at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:107) 
    at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:150) 
    at hudson.tasks.Maven$MavenInstallation.forNode(Maven.java:515) 
    at hudson.tasks.Maven.perform(Maven.java:238) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) 
    at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:700) 
    at hudson.model.Build$RunnerImpl.build(Build.java:178) 
    at hudson.model.Build$RunnerImpl.doRun(Build.java:139) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:470) 
    at hudson.model.Run.run(Run.java:1409) 
    at hudson.matrix.MatrixRun.run(MatrixRun.java:146) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:238) 
Caused by: net.sf.json.JSONException: A JSONObject text must begin with '{' at character 0 of 
    at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:512) 
    at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:843) 
    at net.sf.json.JSONObject._fromString(JSONObject.java:1064) 
    at net.sf.json.JSONObject.fromObject(JSONObject.java:176) 
    at net.sf.json.JSONObject.fromObject(JSONObject.java:147) 
    at hudson.model.DownloadService$Downloadable.getData(DownloadService.java:213) 
    ... 17 more 

スレーブインスタンスのホームディレクトリは/ home/jenkinsは、エラーを説明できる/ var/lib/jenkinsとは対照的ですが、何も見つけられませんでした。なぜなら、ジェンキンが間違ったホームディレクトリにアクセスしようとしている理由を説明しているからです。

他にもこの問題が発生していますか?デバッグ賢明なところへの提案はありますか?

[UPDATE 20120312]

この問題の直接の原因は、ジェンキンスマスター上$ JENKINS_HOME /アップデート/ディレクトリに空のファイルです。この特定のケースでは、マスターノードは$ JENKINS_HOME/updates/hudson.tasks.Maven.MavenInstallerを解析し、そのデータをスレーブノードに送信して、Mavenインストールを更新できるようにしようとしています。私が手動でそのファイルを私が持っている別のjenkinsインストールからのデータで埋めると、すべてのプロセスがうまくいきます。ただし、毎日の更新プロセスにより、ファイルは別の空のファイルに置き換えられ、問題は解決しません。

これは、自己インストールされたすべてのツール(ant、javaなど)に影響を及ぼし、jenkins設定 - > maven - > installのバージョンフィールドのような副作用がほとんどなく、 -ダウン。これらのファイルは、空ダウンロードされている理由

だから、質問はなり?私はどこからダウンロードされているのかについての参照が見つからないので、リンクを直接デバッグすることはできません。たとえ可能であっても、ジェンキンスのインスタレーションではなく、別のインスタレーションで動作するようです。誰でもそこに誰か提案がありますか?

答えて

1

問題が解決しました。ジェンキンのインストールには、Apacheのプロキシがあり、魅力的なように機能していました。それをエラーのない状態にするには、少し微調整が必​​要でした。

ProxyPass   /jenkins/ http://localhost:8080/ 
ProxyPassReverse /jenkins/ http://localhost:8080/ 

へ:私は変更しなければならなかった

ProxyPass   /jenkins/ http://localhost:8080/jenkins/ 
ProxyPassReverse /jenkins/ http://localhost:8080/jenkins/ 

そして、私は追加する必要がありました:

JENKINS_ARGS="--prefix=/jenkins" 

を/ etc /のsysconfig /ジェンキンスを。調整後、すべて正常に動作します。

副次的な注意点として、私にプロキシ設定を通知したことは、すべてのAjaxコールが2回(「/ ...」と「/ jenkins/...」に1回ずつ)行われていたことでした。少なくとも、成功したすべての人。設定を変更すると、ajaxコールはそれぞれ1回だけ作成され、パフォーマンスも向上しました。

この設定ミスがいくつかの奇妙な副作用のためになりますので、うまくいけば、この記事は、他の誰かを助けることができます。

関連する問題