Cannot run program "gradle" in Jenkins

JenkinsGradle

Jenkins Problem Overview


I've installed the Gradle plugin for Jenkins. When I try to build the project I get the following error:

[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

Running the task $ gradle clean -b build/build.gradle from the command line works as expected.

Jenkins Solutions


Solution 1 - Jenkins

I had the same issue and found that the problem for me was the gradle version in the project configuration. It was set to Default and when I set it to the gradle version I was pointing to in the plugin configuration in the Manage Jenkins > Configuration Options, It found gradle and worked properly.

This is a difficult issue to debug and I hope this saves someone else some time.

Solution 2 - Jenkins

Solution Mastering_the_Object pointed out worked form me too, just to clarify steps there:
just installing Gradle plugin in Jenkins is not enough, you must also go to:
Jenkins->Manage Jenkins->Configure Jenkins->Configure system.
Under "Gradle Installations" type in name (it appears as version in project configuration), check "Install automatically" and select version. Then you can select that "Gradle version" in project configuration.

Solution 3 - Jenkins

I was getting this error using the Gradle wrapper, was able to fix my broken build as follows:

  1. Go to Manage Jenkins -> Global Tool Configuration -> Gradle -> Add Gradle, give it a name
  2. Go to Jenkins -> (your job) -> Configure -> Build, choose "Invoke Gradle" and change the Gradle version from (Default) to the named version

Solution 4 - Jenkins

When running Gradle on a CI machine such as Jenkins, it's most convenient to use the Gradle Wrapper.

On your development machine, stand in your root project directory and run

gradle wrapper

Then, check in the resulting files into your source control system. After that, you don't have to install anything on your Jenkins server if you need to change Gradle versions. Just configure your Jenkins job like this:

enter image description here

Quoting from the Gradle User Guide:

> By distributing the wrapper with your project, anyone can work with it > without needing to install Gradle beforehand. Even better, users of > the build are guaranteed to use the version of Gradle that the build > was designed to work with. Of course, this is also great for > continuous integration servers (i.e. servers that regularly build your > project) as it requires no configuration on the server.

Solution 5 - Jenkins

The jenkins can not find the gradle executable. I have never made gradle wrapper to work. Please follow the following steps:

  • Download gradle ( http://gradle.org/downloads),
  • unpack it to, e.g., /usr/local/lib/gradle ,
  • open /etc/profile and add the following two lines:
  • export GRADLE_HOME=/usr/local/lib/gradle
  • export PATH=$PATH:$GRADLE_HOME/bin

It works for my jenkins installation.

ps. I answer this old question, because it is a common issue when setting up gradle with jenkins. I have spent some time trying to make the gradle wrapper work without success before.

Solution 6 - Jenkins

Used both @Skarab & a number of other solutions here to get it to work.

Download gradle ( http://gradle.org/downloads), unpack it to, e.g., /usr/local/lib/gradle , open /etc/profile and add the following two lines: export GRADLE_HOME=/usr/local/lib/gradle export PATH=$PATH:$GRADLE_HOME/bin

Then under Manage Jenkins > Configure system > Gradle, defined GRADLE_HOME and gave that gradle installation a name

Then, {this could be a bug} for the project, change gradle version from Default to the one I defined above

Solution 7 - Jenkins

As others have noted, this is because Jenkins can't find the gradle executable.

None of the published solutions worked for me, but I was able to fix the problem by adding the gradle bin dir to the path set in the .bashrc for the build account on the build slave. Modifying the .profile failed, and setting PATH in the jenkins node configuration also failed.

Some posts will suggest setting the gradle path in the tools menu, but no gradle entry was available there either (perhaps due to regressions / design changes in the gradle plugin?).

In any case, the best test I found (short of running the build again and watching for failure) was to run env over ssh:

ssh <host> env

and check the PATH variable defined that way; if gradle isn't in that path, you probably won't be able to run it from jenkins.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndreas K&#246;berleView Question on Stackoverflow
Solution 1 - JenkinsMastering_the_ObjectView Answer on Stackoverflow
Solution 2 - JenkinspadView Answer on Stackoverflow
Solution 3 - JenkinsMattView Answer on Stackoverflow
Solution 4 - JenkinsJoltaView Answer on Stackoverflow
Solution 5 - JenkinsSkarabView Answer on Stackoverflow
Solution 6 - JenkinskakomaView Answer on Stackoverflow
Solution 7 - JenkinsrcreswickView Answer on Stackoverflow