无法在Jenkins中运行程序“gradle”

时间:2011-12-27 16:16:28

标签: jenkins gradle

我已经为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按预期工作。

7 个答案:

答案 0 :(得分:64)

我遇到了同样的问题,发现我遇到的问题是项目配置中的gradle版本。它设置为默认,当我将其设置为gradle版本时,我指向管理Jenkins &gt;中的插件配置配置选项,找到了gradle并正常工作。

这是一个难以调试的问题,我希望这能节省一些时间。

答案 1 :(得分:20)

解决方案 Mastering_the_Object 指出也是我的工作,只是为了澄清那里的步骤:
只是在Jenkins中安装Gradle插件是不够的,你还必须去:
Jenkins-&gt;管理Jenkins-&gt;配置Jenkins-&gt;配置系统 在&#34; Gradle Installations&#34;输入名称(在项目配置中显示为版本),选中&#34;自动安装&#34;并选择版本。然后你可以选择&#34; Gradle版本&#34;在项目配置中。

答案 2 :(得分:13)

在Jenkins等CI计算机上运行Gradle时,最方便的是使用Gradle Wrapper。

在您的开发计算机上,站在根项目目录中并运行

gradle wrapper

然后,将生成的文件签入源控制系统。之后,如果需要更改Gradle版本,则无需在Jenkins服务器上安装任何内容。只需像这样配置你的Jenkins工作:

enter image description here

引用Gradle User Guide

  

通过为您的项目分发包装器,任何人都可以使用它   无需事先安装Gradle。用户更好   构建保证使用构建的Gradle版本   旨在与之合作。当然,这也很棒   持续集成服务器(即定期构建您的服务器的服务器   因为它不需要在服务器上进行配置。

答案 3 :(得分:10)

我使用Gradle包装器收到此错误,能够按如下方式修复我的损坏版本:

  1. 转到管理Jenkins - &gt;全局工具配置 - &gt; Gradle - &gt;添加Gradle ,为其命名
  2. 转到 Jenkins - &gt; (你的工作) - &gt;配置 - &gt;构建,选择&#34;调用Gradle&#34;并将Gradle版本从(默认)更改为指定版本

答案 4 :(得分:1)

jenkins无法找到gradle可执行文件。我从来没有让gradle包装工作。请按照以下步骤操作:

  • 下载gradle(http://gradle.org/downloads),
  • 将其解压缩到例如/ usr / local / lib / gradle,
  • 打开/ etc / profile并添加以下两行:
  • export GRADLE_HOME = / usr / local / lib / gradle
  • export PATH = $ PATH:$ GRADLE_HOME / bin

适用于my jenkins installation

PS。我回答这个老问题,因为在与jenkins建立gradle时这是一个常见的问题。我花了一些时间试图使gradle包装器之前没有成功。

答案 5 :(得分:1)

同时使用@Skarab&amp;这里有许多其他解决方案可以让它发挥作用。

下载gradle(http://gradle.org/downloads), 将其解压缩到例如/ usr / local / lib / gradle, 打开/ etc / profile并添加以下两行: export GRADLE_HOME = / usr / local / lib / gradle export PATH = $ PATH:$ GRADLE_HOME / bin

然后在Manage Jenkins&gt;下配置系统&gt; Gradle,定义了GRADLE_HOME并为该gradle安装命名

然后,{这可能是项目的bug},将gradle版本从Default更改为我上面定义的版本

答案 6 :(得分:0)

正如其他人所说,这是因为Jenkins找不到gradle可执行文件。

所有已发布的解决方案都不适合我,但我能够通过将gradle bin目录添加到.bashrc中为构建从站上的构建帐户设置的路径来解决问题。修改.profile失败,并在jenkins节点配置中设置PATH也失败了。

有些帖子会建议在工具菜单中设置gradle路径,但也没有可用的gradle条目(可能是由于gradle插件中的回归/设计更改?)。

在任何情况下,我发现的最佳测试(再次运行构建并观察失败)是通过ssh运行env

ssh <host> env

并检查以这种方式定义的PATH变量;如果gradle不在那条路径中,你可能无法从jenkins运行它。