Jenkins用のGradleプラグインをインストールしました。プロジェクトをビルドしようとすると、次のエラーが表示されます。
[workspace] $ gradle clean -b build/build.gradle
FATAL: command execution failed
Java.io.IOException: Cannot run program "gradle" (in directory "/Users/Shared/Jenkins/Home/jobs/test/workspace"): error=2, No such file or directory
at Java.lang.ProcessBuilder.start(ProcessBuilder.Java:460)
at hudson.Proc$LocalProc.<init>(Proc.Java:244)
at hudson.Proc$LocalProc.<init>(Proc.Java:216)
at hudson.Launcher$LocalLauncher.launch(Launcher.Java:707)
at hudson.Launcher$ProcStarter.start(Launcher.Java:338)
at hudson.Launcher$ProcStarter.join(Launcher.Java:345)
at hudson.plugins.gradle.Gradle.performTask(Gradle.Java:201)
at hudson.plugins.gradle.Gradle.perform(Gradle.Java:97)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.Java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.Java:695)
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:465)
at hudson.model.Run.run(Run.Java:1404)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:46)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:238)
Caused by: Java.io.IOException: error=2, No such file or directory
at Java.lang.UNIXProcess.forkAndExec(Native Method)
at Java.lang.UNIXProcess.<init>(UNIXProcess.Java:53)
at Java.lang.ProcessImpl.start(ProcessImpl.Java:91)
at Java.lang.ProcessBuilder.start(ProcessBuilder.Java:453)
... 16 more
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
タスクの実行$ gradle clean -b build/build.gradle
はコマンドラインから期待どおりに機能します。
私は同じ問題を抱えていて、私にとっての問題はプロジェクト構成のgradleバージョンであることがわかりました。 デフォルトに設定されており、gradleバージョンに設定したときにManage Jenkins> Configuration Optionsのプラグイン設定でポイントしていました、gradleが見つかり、適切に機能しました。
これはデバッグするのが難しい問題であり、これにより誰かが時間を節約できることを願っています。
解決策Mastering_the_Object指摘されたのは、私からもうまくいきました。
JenkinsにGradleプラグインをインストールするだけでは不十分です。以下にもアクセスする必要があります。
Jenkins-> Manage Jenkins-> Configure Jenkins-> Configure system。
「Gradle Installations」の下に名前を入力し(プロジェクト構成にバージョンとして表示されます)、「Install automatic」をチェックしてバージョンを選択します。次に、プロジェクト構成でその「Gradle version」を選択できます。
JenkinsなどのCIマシンでGradleを実行する場合、Gradle Wrapperを使用するのが最も便利です。
開発マシンで、ルートプロジェクトディレクトリに立ち、実行します
gradle wrapper
次に、結果のファイルをソース管理システムにチェックインします。その後、Gradleのバージョンを変更する必要がある場合、Jenkinsサーバーに何もインストールする必要はありません。次のようにJenkinsジョブを設定するだけです:
Gradle User Guide からの引用:
ラッパーをプロジェクトと一緒に配布することにより、Gradleを事前にインストールしなくても誰でも作業できます。さらに良いことに、ビルドのユーザーは、ビルドが動作するように設計されたGradleのバージョンを使用することが保証されています。もちろん、これはサーバー上の構成を必要としないため、継続的な統合サーバー(つまり、プロジェクトを定期的に構築するサーバー)にも最適です。
Gradleラッパーを使用してこのエラーが発生していましたが、壊れたビルドを次のように修正できました:
Jenkinsはgradle実行可能ファイルを見つけることができません。 gradle wrapperが動作するようにしたことはありません。次の手順に従ってください。
my jenkins installation で機能します。
追伸私はこの古い質問に答えます。なぜなら、jenkinsでgradleをセットアップするときの一般的な問題だからです。私は以前、gradleラッパーを成功させることなく機能させるために時間を費やしました。
ここで@Skarabと他の多くのソリューションの両方を使用して、機能させました。
Gradleをダウンロードし( http://gradle.org/downloads )、たとえば/ usr/local/lib/gradleに展開し、/ etc/profileを開いて、次の2行を追加します。export GRADLE_HOME =/usr/local/lib/gradle export PATH = $ PATH:$ GRADLE_HOME/bin
次に、Jenkinsの管理>システムの構成> Gradleで、GRADLE_HOMEを定義し、そのgradleインストールに名前を付けました
次に、プロジェクトの{これはバグかもしれません}、gradleのバージョンをデフォルトから上で定義したものに変更します
他の人が指摘したように、これはJenkinsがgradle実行可能ファイルを見つけることができないためです。
公開されたソリューションはどれもうまくいきませんでしたが、ビルドスレーブのビルドアカウントの.bashrcで設定されたパスにgradle bin dirを追加することで問題を修正できました。 .profileの変更に失敗し、jenkinsノード構成でのPATHの設定も失敗しました。
一部の投稿では、ツールメニューでgradleパスを設定することを提案していますが、そこにはgradleエントリもありませんでした(おそらく、gradleプラグインのリグレッション/デザイン変更が原因ですか?)。
いずれにせよ、私が見つけた最良のテスト(ビルドの再実行と失敗の監視以外)は、sshでenv
を実行することでした。
ssh <Host> env
そして、そのように定義されたPATH変数を確認します。 gradleがそのパスにない場合、おそらくjenkinsから実行することはできません。