Почему groovy не работает в конвейере Дженкинса?

В настоящее время я пытаюсь запустить groovy-скрипт из своего конвейера в качестве одного из своих узлов, но столкнулся с этой ошибкой:

[CompanyName] Running shell script
+ ./ideainspect.groovy
env: groovy: No such file or directory

Кроме того, я попытался установить плагин для groovy, но он почему-то не устанавливается. Всякий раз, когда я обновляю страницу инструментов, установщик исчезает. Я неправильно устанавливаю groovy? Пожалуйста помоги!

Изменить: соответствующие данные

stage 'Static Analysis'
node {
    dir("Android/btMobileApp") {
        sh "./ideainspect.groovy"
        sh "./gradlew checkstyle lintDebug"
    }
}

А файл ideainspect.groovy — это исполняемый файл с шебангом #!/usr/bin/env groovy, что может быть проблемой.


person iHowell    schedule 23.05.2016    source источник
comment
как выглядит соответствующая часть вашего jenkinsfile?   -  person Mark Chorley    schedule 23.05.2016
comment
Добавил информацию выше.   -  person iHowell    schedule 23.05.2016


Ответы (1)


У вашего пользователя jenkins есть groovy на своем пути? Если да, то брось херню и попробуй

sh 'замечательная идеяinspect.groovy'

Если это не по пути, вы можете попробовать

sh '/usr/bin/groovy ideainspect.groovy'

(или там, где установлен groovy)

Или добавьте его в переменную среды path, используя Manage Jenkins -> Configure Systems. Это может быть неуместно, если у вас много проектов, использующих разные версии groovy.

person Mark Chorley    schedule 23.05.2016
comment
Есть ли способ проверить, установлен ли он на пути? Я установил его на машину, я просто не могу сказать, есть ли у пользователя доступ. - person iHowell; 23.05.2016
comment
Просто попробуйте sh 'groovy ideainspect.groovy'. Если он говорит что-то вроде «не удается найти groovy», значит, он не на пути. Или ssh на поле и su для пользователя jenkins, затем попробуйте запустить groovy оттуда, это то же самое. - person Mark Chorley; 23.05.2016
comment
Хорошо, используя первый метод из консоли сценария в управлении jenkins, я получаю сообщение об ошибке: groovy.lang.MissingMethodException: Нет подписи метода: Script1.sh() применим для типов аргументов: значения (java.lang.String): [groovy ideaspector.groovy] Возможные решения: is(java.lang.Object), use([Ljava.lang.Object;), run(), run(), any(), each(groovy.lang.Closure) - person iHowell; 23.05.2016
comment
Если я подключусь к пользователю jenkins и запущу 'groovy -h', я все же получу экран справки... - person iHowell; 23.05.2016
comment
Вы уверены, что правильно процитировали эту команду? похоже, что он передает 2 аргумента sh в массиве, а не один аргумент «groovy ideainspect.groovy» - person Mark Chorley; 23.05.2016
comment
Если это не поможет, github.com/jenkinsci/pipeline- В examples/blob/master/docs/ есть раздел о заводных ошибках. - person Mark Chorley; 23.05.2016
comment
Давайте продолжим это обсуждение в чате. - person iHowell; 23.05.2016
comment
Для тех, кто хотел бы знать, что произошло, мы сделали вывод, что я не установил правильные разрешения для папки, в которой находился groovy, поэтому jenkins не смог ее найти. Теперь все исправлено благодаря этому замечательному парню! - person iHowell; 23.05.2016