Jenkins – Can’t run gradle on jenkins slave

gradlehudsonJenkins

I've configured a jenkins ubuntu slave and I want to run my gradle build on it(with gradle plugin). The problem is that when running the jenkins build job I get:

 $ gradle --no-daemon --info clean build
 FATAL: command execution failed
 java.io.IOException: Cannot run program "gradle" (in directory "/var/jenkins/workspace/dadi"): java.io.IOException: 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)

When running the same gradle command on the command line of the slave(same user) it runs successfully.

Best Answer

Found a workaround solution! I've start using gradle wrapper in order to run the gradle build. I did 2 things:

  1. followed instructions on this page to create gradlew (and other files) and checked them in my repository
  2. in jenkins gradle plugin marked the build step to use gradle wrapper.

    task wrapper(type: Wrapper) { gradleVersion = '2.0' }

This above line would create.gradle folder & download required gradle version(mentioned in the task) every time gradle build is run, that means there is no need to check-in .gradle folder into your repository anymore.

Also had to rename gradlew to gradle.bat since the jenkins gradle plugin try to run the gradle.bat even on linux. That's it. working.