запускать серверы node.js в лазурном качестве в качестве обработчика действия после развертывания

Могу ли я запустить сервер node.js в Azure в качестве обработчика действия после развертывания?

Подробности показаны ниже:

команда: 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

Вот как выглядит мой вывод на консоль Jenkins:

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

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

Может быть, deploy.cmd неправильно настроен?


person raneshu    schedule 31.01.2017    source источник


Ответы (2)


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

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

"scripts": {
    "postinstall": "npm run test:servers"
}
person Aaron Chen    schedule 01.02.2017
comment
которые будут запускать серверы, но развертывание зависает (и, в конечном итоге, ОТКАЗЫВАЕТСЯ), потому что серверы просто продолжают работать - они никогда не предназначены для завершения (в отличие от большинства других скриптов, которые выполняются до завершения) - person raneshu; 01.02.2017

Хотя 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, поэтому я точно знал, что он вызывается, а не пропускается. Итак, вы можете делать все, что угодно. Вам просто нужно делать то, что вам нужно, оттуда.

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

person David Betz    schedule 08.02.2017