无法在Jenkins中运行程序"gradle"

And*_*rle 58 gradle jenkins

我已经为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
Run Code Online (Sandbox Code Playgroud)

$ gradle clean -b build/build.gradle从命令行运行任务按预期工作.

Mas*_*ect 65

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

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

  • Gradle配置现在开启**Manage Jenkins - >全局工具配置** (6认同)
  • 如何明确输入或选择实际的gradle版本?它不允许我选择除默认之外的任何其他内容 (2认同)

小智 21

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


Mat*_*ess 14

我使用Gradle包装器得到了这个错误,能够修复我的破坏的构建如下:

  1. 转到管理Jenkins - >全局工具配置 - > Gradle - >添加Gradle,为其命名
  2. 转到Jenkins - >(您的工作) - > Configure - > Build,选择"Invoke Gradle"并将Gradle版本从(默认)更改为指定版本


Jol*_*lta 13

在Jenkins等CI机器上运行Gradle时,最方便的是使用Gradle Wrapper.

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

gradle wrapper
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

Gradle用户指南引用:

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

  • 不是这样.包装器很满意您提供的任何URL,因此它不需要Internet访问.我们在Artifactory服务器中有一个本地缓存的Gradle副本(任何HTTP服务器都可以).`gradle-wrapper.properties`需要指向内部URL而不是官方repo.这也卸载了官方服务器,并为我们的本地lusers提供了更好的构建速度.首次下载包装器后,您无需在PC上构建网络连接 - 并且CI计算机可以持续访问我们的本地存储库. (3认同)