我可以在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配置不正确吗?
答案 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中设置了一个键,所以我知道它被调用而不是被跳过。所以,你可以做任何事情。你只需要从那里做你需要做的事。
唯一需要注意的是:对于我的情况,有时似乎有点挂起,但最终会继续。