Невозможно запустить программу "gradle" в Jenkins - PullRequest
58 голосов
/ 27 декабря 2011

Я установил плагин Gradle для Jenkins. Когда я пытаюсь построить проект, я получаю следующую ошибку:

[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

Запуск задачи $ gradle clean -b build/build.gradle из командной строки работает как положено.

Ответы [ 7 ]

65 голосов
/ 31 января 2012

У меня была та же проблема, и я обнаружил, что проблема для меня - версия gradle в конфигурации проекта.Он был установлен на По умолчанию , и когда я установил его в версию Gradle, на которую я указывал в конфигурации плагина в Управление Jenkins > Параметры конфигурации , он обнаружилgradle и работал должным образом.

Это трудная проблема для отладки, и я надеюсь, что это сэкономит кому-то еще время.

20 голосов
/ 16 апреля 2014

Решение Mastering_the_Object указал, что работал и со мной тоже, просто чтобы прояснить шаги там:
недостаточно просто установить плагин Gradle в Jenkins, вы также должны перейти к:Jenkins-> Configure Jenkins-> Configure system.
В поле «Установки Gradle» введите имя (оно отображается как версия в конфигурации проекта), установите флажок «Установить автоматически» и выберите версию.Затем вы можете выбрать эту «версию Gradle» в конфигурации проекта.

13 голосов
/ 05 января 2015

При работе с Gradle на машине CI, такой как Jenkins, наиболее удобно использовать Gradle Wrapper.

На вашей машине для разработки встаньте в корневой каталог проекта и запустите

gradle wrapper

Затем проверьте полученные файлы в вашей системе управления версиями.После этого вам не нужно ничего устанавливать на свой сервер Jenkins, если вам нужно изменить версии Gradle.Просто настройте свою работу в Jenkins следующим образом:

enter image description here

Цитирование из Руководство пользователя Gradle :

Путем распространения оболочки сВаш проект, любой может работать с ним без предварительной установки Gradle.Более того, пользователи сборки гарантированно используют версию Gradle, с которой была разработана сборка.Конечно, это также отлично подходит для серверов непрерывной интеграции (т. Е. Серверов, которые регулярно строят ваш проект), поскольку не требует настройки на сервере.

12 голосов
/ 04 февраля 2017

Я получал эту ошибку с помощью оболочки Gradle, смог исправить мою поврежденную сборку следующим образом:

  1. Перейти к Управление Jenkins -> Глобальная конфигурация инструментов -> Gradle -> ДобавитьGradle , дайте ему имя
  2. Перейдите на Jenkins -> (ваша работа) -> Configure -> Build , выберите «Invoke Gradle» и измените версию Gradle с (по умолчанию)) к названной версии
1 голос
/ 25 июня 2014

Использовал @Skarab и ряд других решений, чтобы заставить его работать.

Загрузите gradle (http://gradle.org/downloads), распакуйте его, например, в / usr / local / lib / gradle,откройте / etc / profile и добавьте следующие две строки: export GRADLE_HOME = / usr / local / lib / gradle export PATH = $ PATH: $ GRADLE_HOME / bin

Затем в разделе «Управление Jenkins> Настройка системы> Gradle, определено»GRADLE_HOME и дал этой установке Gradle имя

Затем {это может быть ошибкой} для проекта, измените версию Gradle с Default на ту, которую я определил выше

1 голос
/ 19 сентября 2012

Дженкинс не может найти исполняемый файл gradle. Я никогда не заставлял gradle обертку работать. Пожалуйста, выполните следующие действия:

  • Скачать Gradle (http://gradle.org/downloads),
  • распакуйте его, например, в / usr / local / lib / gradle,
  • откройте / etc / profile и добавьте следующие две строки:
  • export GRADLE_HOME = / usr / local / lib / gradle
  • export PATH = $ PATH: $ GRADLE_HOME / bin

Это работает для моей установки jenkins .

пс. Я отвечаю на этот старый вопрос, потому что это обычная проблема при настройке gradle с jenkins. Я потратил некоторое время, пытаясь заставить работать грейферную упаковку безуспешно.

0 голосов
/ 26 февраля 2014

Как уже отмечали другие, это потому, что Дженкинс не может найти исполняемый файл gradle.

Ни одно из опубликованных решений не сработало для меня, но мне удалось исправить проблему, добавив dir gradle bin впуть, заданный в .bashrc для учетной записи сборки на ведомом устройстве сборки.Не удалось изменить .profile, а установка PATH в конфигурации узла jenkins также не удалась.

В некоторых публикациях будет предложено установить путь сортировки в меню инструментов, но там также не было доступной записи сортировки (возможно, из-за регрессий /изменения дизайна в плагине Gradle?).

В любом случае, лучший тест, который я нашел (если не считать повторной сборки и отслеживания ошибок), был запуск env поверх ssh:

ssh <host> env

и проверьте переменную PATH, определенную таким образом;если Gradle не на этом пути, вы, вероятно, не сможете запустить его от Дженкинса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...