Jenkins “无法运行程序”;格拉德尔“;在詹金斯
我已经为Jenkins安装了Gradle插件。当我尝试构建项目时,出现以下错误: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
[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包装器得到了这个错误,能够修复我的损坏版本,如下所示: