Подтвердить что ты не робот

Не удается запустить программу "gradle" в Дженкинсе

Я установил плагин 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 из командной строки работает как ожидалось.

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

gradle wrapper

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

enter image description here

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

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

Ответ 4

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

  • Перейдите в раздел Управление Jenkins → Глобальная настройка инструмента → Gradle → Добавить Gradle, укажите имя
  • Перейдите в Jenkins → (ваша работа) → Configure → Build, выберите "Invoke Gradle" и измените версию Gradle с (по умолчанию) на именованную версию

Ответ 5

Дженкинс не может найти исполняемый файл 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. Я потратил некоторое время, пытаясь сделать обертку gradle работать без успеха раньше.

Ответ 6

Используется как @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 по умолчанию на ту, которую я определил выше

Ответ 7

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

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

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

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

ssh <host> env

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