2015-06-26 6 views
0

Я пытаюсь запустить команду forever для скрипта node.js, чтобы запустить его в фоновом режиме. Моя полная команда:forever run для node.js с использованием jenkins на окнах

"C:/Users/Administrator/AppData/Roaming/npm/forever.cmd" -c "C:/Program Files/nodejs/node.exe" start app.js 

Это нормально работает, когда я запускал ее непосредственно в командной строке. Однако, когда я положил его в качестве шага сборки в Дженкинс я всегда получаю следующую ошибку

C:\Program Files (x86)\Jenkins\workspace\apps>"C:/Users/Administrator/AppData/Roaming/npm/forever.cmd" -c "C:/Program Files/nodejs/node.exe" start app.js 
'node' is not recognized as an internal or external command, 
operable program or batch file. 
Build step 'Execute Windows batch command' marked build as failure 

PATH на машине правильно установить и включить путь к приложению узла. Это подтверждается тем, что команда запускается успешно при локальном запуске на подчиненном компьютере без предоставления абсолютного пути. Также я предоставляю путь к исполняемому узлу в самой команде с использованием опции -c в случае, если она не выбирает из переменной PATH.

Не уверен, что это может быть из-за того, что jenkins запускают вещи в окне с помощью JVM-клиента?

Любые предложения для этого.

Благодаря Манодж

+1

Вы используете forever-win https://www.npmjs.com/package/forever-win? – Slav

+0

Я использую forever установленную, используя npm install forever -g команду на окнах. Поскольку команда работает нормально при запуске локально на компьютере Windows, я не вижу проблемы с вечным пакетом. Проблема заключается в том, как jenkins управляет этой командой на окнах. Поскольку на самом деле сам узел вызывает внутри него, интересно, какая-то конфигурация требуется на уровне дженкинсов (в JVM-клиенте с Jenkins работает для подключения к оконной машине.) –

+0

Проблема по-прежнему остается в вопросе 'PATH'. Дженкинс не может работать под тем же именем, что и ваш локальный пользователь (который вы пробовали тесты командной строки). Простой тест: запускайте сборку, которая имеет только команду «Выполнение Windows Batch Command», и там пишут только 'set'. Это напечатает все переменные среды. Убедитесь, что все они правильные, и путь установлен правильно. – Slav

ответ

1

Изменения в PATH (такие как сделано после установки программного обеспечения, как node) не подобран процессы, которые были запущены в момент установки.

Эти процессы (процесс Jenkins и подчиненные процессы на удаленных компьютерах в этом случае) необходимо перезапустить после установки, чтобы наследовать недавно измененный PATH.

При проверке вручную при входе в систему с удаленными и запущенными командами вновь создается командная строка сеанса входа в систему, таким образом, наследуется новый PATH и ваши тесты работают, однако процесс подчиненного Jenkins, который не был перезапущен с момента установки не имеют новых PATH

+0

Спасибо за ответ. Да ты прав. Ведомый агент необходимо перезапустить. Хотя эта проблема решена. В итоге у меня другая проблема. Теперь навсегда начинайте правильно, хотя кажется, что не показывает навсегда процессы, когда запускается команда FOREVER LIST.Также навсегда stopall говорит, что навсегда процесс не работает. Кажется, что некоторая ошибка навсегда для окон. Попытка увидеть, как решить проблему. –

Смежные вопросы