在azure中运行node.js服务器作为后部署操作挂钩

时间:2017-01-31 17:58:32

标签: azure kudu

我可以在azure中运行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

这是我的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

如果我使用调试控制台(如so),看起来我必须在每次部署后运行该命令,而我宁愿不这样做。

可能是deploy.cmd配置不正确吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试在 package.json 中使用postinstall脚本来运行命令?

例如,您可以在安装软件包后使用以下命令运行npm run test:servers

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

答案 1 :(得分: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中设置了一个键,所以我知道它被调用而不是被跳过。所以,你可以做任何事情。你只需要从那里做你需要做的事。

唯一需要注意的是:对于我的情况,有时似乎有点挂起,但最终会继续