Jenkins “无法运行程序”;格拉德尔“;在詹金斯

Jenkins “无法运行程序”;格拉德尔“;在詹金斯,jenkins,gradle,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 su

我已经为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
[workspace]$gradle clean-b build/build.gradle
致命:命令执行失败
java.io.IOException:无法运行程序“gradle”(在目录“/Users/Shared/Jenkins/Home/jobs/test/workspace”中):错误=2,没有这样的文件或目录
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
位于hudson.Proc$LocalProc(Proc.java:244)
在hudson.Proc$LocalProc.(Proc.java:216)
位于hudson.Launcher$LocalLauncher.launch(Launcher.java:707)
在hudson.Launcher$ProcStarter.start(Launcher.java:338)
位于hudson.Launcher$ProcStarter.join(Launcher.java:345)
位于hudson.plugins.gradle.gradle.performTask(gradle.java:201)
位于hudson.plugins.gradle.gradle.perform(gradle.java:97)
在hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
位于hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:695)
位于hudson.model.Build$RunnerImpl.Build(Build.java:178)
位于hudson.model.Build$RunnerImpl.doRun(Build.java:139)
位于hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:465)
在hudson.model.Run.Run(Run.java:1404)
在hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
在hudson.model.ResourceController.execute(ResourceController.java:88)
运行(Executor.java:238)
原因:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.UNIXProcess.forkAndExec(本机方法)
位于java.lang.UNIXProcess(UNIXProcess.java:53)
在java.lang.ProcessImpl.start(ProcessImpl.java:91)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 还有16个
生成步骤“调用梯度脚本”将生成结果更改为失败
生成步骤“调用梯度脚本”将生成标记为失败
完成:失败

从命令行运行任务
$gradle clean-b build/build.gradle
的效果与预期一样。

我也遇到了同样的问题,并发现我遇到的问题是项目配置中的gradle版本。它被设置为Default,当我在Manage Jenkins配置选项中的插件配置中将它设置为gradle版本时,它找到了gradle并正常工作


这是一个很难调试的问题,我希望这能为其他人节省一些时间。

詹金斯夫妇找不到gradle可执行文件。我从来没有让gradle包装机工作过。请按照以下步骤操作:

  • 下载gradle()
  • 将其解压缩到,例如/usr/local/lib/gradle
  • 打开/etc/profile并添加以下两行:
  • 导出GRADLE\u HOME=/usr/local/lib/GRADLE
  • 导出路径=$PATH:$GRADLE\u HOME/bin
它对我有用


另外,我回答这个老问题,因为这是一个常见的问题,当建立格雷德尔与詹金斯。我以前花了一些时间试图让gradle包装器工作,但没有成功。

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

所有已发布的解决方案对我都不起作用,但我通过将gradle bin dir添加到.bashrc中为构建从机上的构建帐户设置的路径中,解决了这个问题。修改.profile失败,在jenkins节点配置中设置路径也失败

一些帖子会建议在工具菜单中设置渐变路径,但是那里也没有可用的渐变条目(可能是因为渐变插件中的回归/设计更改?)

在任何情况下,我发现最好的测试(除了再次运行构建和观察失败之外)是通过ssh运行
env

ssh <host> env
ssh-env
并检查以这种方式定义的路径变量;如果gradle不在这条路径上,您可能无法从jenkins处运行它。

解决方案掌握了我指出的对象,只是为了澄清其中的步骤:
仅在Jenkins中安装Gradle插件是不够的,您还必须转到:
詹金斯->管理詹金斯->配置詹金斯->配置系统。

在“Gradle安装”下键入名称(在项目配置中显示为版本),选中“自动安装”并选择版本。然后,您可以在项目配置中选择“Gradle版本”。

使用了@Skarab和许多其他解决方案来实现它

下载gradle(), 将其解压缩到,例如/usr/local/lib/gradle, 打开/etc/profile并添加以下两行: 导出GRADLE\u HOME=/usr/local/lib/GRADLE 导出路径=$PATH:$GRADLE\u HOME/bin

然后在Manage Jenkins>Configure system>Gradle下,定义Gradle_HOME并为Gradle安装命名


然后,{这可能是一个bug}对于该项目,将gradle版本从默认更改为我在上面定义的版本

在诸如Jenkins这样的CI机器上运行gradle时,使用gradle包装器是最方便的

在开发机器上,站在根项目目录中并运行

gradle wrapper
然后,将生成的文件检入源代码管理系统。之后,如果需要更改Gradle版本,则不必在Jenkins服务器上安装任何东西。只需按如下方式配置Jenkins作业:

引述:

通过将包装器与项目一起分发,任何人都可以使用它 无需事先安装Gradle。更好的是,用户 该构建保证使用该构建所使用的Gradle版本 设计用于与。当然,这对你来说也很好 持续集成服务器(即定期构建 项目),因为它不需要在服务器上进行配置


我使用Gradle包装器得到了这个错误,能够修复我的损坏版本,如下所示:

  • 转到管理Jenkins->全局工具配置->渐变->添加渐变,为其命名
  • 转到詹金斯->(您的