Jenkins script уходит преждевременно при использовании npm install в Windows

В моей работе 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 вместо продолжения последующих операторов?

Ответ 1

Итак, оказывается, что npm - командный файл, а не исполняемый файл, поэтому его нужно вызвать с помощью call из Jenkins script:

call npm install grunt

Ответ 2

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