在Jenkins中不能运行程序“gradle”

我已经为Jenkins安装了Gradle插件。 当我尝试构build项目时,出现以下错误:

[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 clean -b build/build.gradle按预期工作。

我遇到了同样的问题,发现我的问题是项目configuration中的gradle版本。 它被设置为默认值 ,当我将它设置为我在pipe理Jenkins > configuration选项的插件configuration中指向的gradle版本时,它find了gradle并正常工作。

这是一个难以debugging的问题,我希望这可以节省别人一些时间。

解决schemeMastering_the_Object指出了我的工作,只是为了澄清步骤:
只要在Jenkins中安装Gradle插件是不够的,你还必须去:
Jenkins->pipe理Jenkins->configurationJenkins->configuration系统。
在“Gradle Installations”下input名称(在项目configuration中显示为版本),勾选“自动安装”并select版本。 然后,您可以在项目configuration中select“Gradle版本”。

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

在你的开发机器上,站在你的根项目目录下运行

 gradle wrapper 

然后,检查生成的文件到您的源代码pipe理系统。 之后,如果您需要更改Gradle版本,则不必在Jenkins服务器上安装任何内容。 只需configuration你的Jenkins这样的工作:

在这里输入图像说明

从Gradle用户指南引用:

通过分发你的项目包装,任何人都可以使用它,而无需事先安装Gradle。 更好的是,构build的用户保证使用构build被devise用于的Gradle版本。 当然,这对于持续集成服务器(也就是定期构build项目的服务器)来说也是很好的,因为它不需要在服务器上进行configuration。

我得到这个错误使用Gradle包装,能够修复我的破碎版本如下:

  1. 转到pipe理jenkins – >全局工具configuration – > Gradle – >添加Gradle ,给它一个名字
  2. 转到jenkins – >(你的工作) – >configuration – >生成 ,select“调用Gradle”并将Gradle版本从(默认)更改为指定的版本

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

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

它适用于我的jenkins安装 。

PS。 我回答了这个老问题,因为和jenkins一起设置gradle是一个常见的问题。 我花了一些时间试图使gradle包装工作没有成功之前。

在这里同时使用@Skarab和其他一些解决scheme来实现它。

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

然后在pipe理Jenkins>configuration系统> Gradle下,定义GRADLE_HOME并给这个gradle安装一个名字

然后,{这可能是一个错误}的项目,改变从默认的gradle版本到我上面定义的一个

正如其他人所指出的那样,这是因为Jenkins找不到gradle可执行文件。

没有发布的解决scheme为我工作,但我能够解决这个问题,通过添加到生成从站上的构build帐户的.bashrc中设置的pathgradle bin目录。 修改.profile失败,并在jenkins节点configuration中设置PATH也失败。

一些post会build议在工具菜单中设置gradlepath,但是在那里也没有可用的gradle条目(可能是由于gradle插件中的回归/devise更改?)。

无论如何,我发现的最好的testing(再次运行构build和注意失败)是通过ssh运行env

 ssh <host> env 

并检查这种方式定义的PATHvariables; 如果gradle不在这个path,你可能无法从jenkins运行它。