2017-01-31 5 views
2

Могу ли я запустить сервер node.js в лазурном режиме в качестве действия для развертывания после развертывания?Запустите node.js-серверы в лазурном режиме, как и после развертывания. Действие:

Подробности приведены ниже:

команда: npm run test:servers

Пробовал добавить действие развертывания пост в deploy.cmd (как показано ниже), но это просто проигнорировано после развертывания не завершится (без ошибок, и развертывание выполнено успешно).

:: Post deployment stub 
IF DEFINED POST_DEPLOYMENT_ACTION call npm run test:servers 
IF !ERRORLEVEL! NEQ 0 goto error 

Вот что мой Дженкинс вывод консоли выглядит следующим образом:

remote: checking if package.json exists[K 
remote: Finished successfully.[K 
remote: Running post deployment command(s)...[K 
remote: Deployment successful.[K 
Notifying upstream projects of job completion 

, если я использую консоль отладки (например, so), похоже, мне придется выполнить команду после каждого развертывания, которое я Скорее всего, это не так.

Может быть deploy.cmd не настроен должным образом?

ответ

1

Вы использовали сценарий postinstall в package.json для запуска команды?

Например, вы можете использовать следующие функции для запуска npm run test:servers после установки пакета.

"scripts": { 
    "postinstall": "npm run test:servers" 
} 
+0

, который будет запускать серверы, но развертывание зависает (и ПОКАЗЫВАЕТСЯ в конце концов), потому что серверы просто продолжают работать - они никогда не должны завершаться (в отличие от большинства других сценариев, которые заканчиваются) – raneshu

1

Хотя package.json как мы делаем это почти везде, Azure не уважает многих package.json действий, так что те не вариант для меня.

Вы определенно находитесь на верном пути. Имея это удалось себя, вот что я сделал:

Вот точный код из моего deploy.cmd который я добавил только перед goto end:

IF EXIST "%DEPLOYMENT_TARGET%\publish.js" (
    pushd "%DEPLOYMENT_TARGET%" 
    node "%DEPLOYMENT_TARGET%\publish.js" 
    IF !ERRORLEVEL! NEQ 0 goto error 
    popd 
) 

делать все, что вы хотите в publish.js. В моем случае я вызываю HTTP и Redis. В моих тестах я установил ключ в Redis, поэтому я знал, что он был вызван и не пропущен. Итак, вы можете все. Вам просто нужно делать то, что вам нужно делать оттуда.

Единственное предостережение: для моего сценария, похоже, иногда немного зависает, но в конце концов оно продолжается.