Ответ 1
Итак, оказывается, что npm
- командный файл, а не исполняемый файл, поэтому его нужно вызвать с помощью call
из Jenkins script:
call npm install grunt
В моей работе Jenkins я хочу создать приложение JavaScript с помощью Grunt. Сценарии сборки Jenkins создают каталог сборки (если он еще не существует), изменения в этом каталоге и выполняются:
npm install grunt
npm install grunt-zip
grunt --gruntfile=[something]
(Конечно, grunt-cli
устанавливается глобально.) Когда я создаю задание, первое выражение заставляет Grunt и зависимости сбрасываться, как ожидалось. Однако задание завершается успешно:
Archiving artifacts
No emails were triggered.
Finished: SUCCESS
Второй npm install
не запускается. Любая идея, почему script заканчивается после запуска npm install
вместо продолжения последующих операторов?
Итак, оказывается, что npm
- командный файл, а не исполняемый файл, поэтому его нужно вызвать с помощью call
из Jenkins script:
call npm install grunt
я бы порекомендовал не использовать локальную установку grunt/nodejs, но вместо этого получал jenkins, чтобы сделать это для вас!
это намного проще и означает, что меньше связано с конкретными установками и переменными системы.
действия:
a) использовать nodejs jenkins plugin + получить его для установки nodejs на машине /grunt -cli → Интеграция Jenkins с Grunt
b) заполнить свой пакет .json любыми требуемыми зависимостями nodejs, например, grunt/grunt-zip и т.д.
c) при запуске grunt просто выполните обновление "npm" перед командой "grunt"
таким образом, что вы не выполняете явную установку npm, все настроено из вашего пакета. json, а ваши скрипты сборки будут менее хрупкими, и ваши разработчики могут использовать те же шаги, что и сервер сборки, например, "npm update; grunt", локально же, как сервер сборки