【问题标题】:run node.js servers in azure as post deployment action hook在 azure 中运行 node.js 服务器作为部署后操作挂钩
【发布时间】:2017-01-31 17:58:32
【问题描述】:

我可以在 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 配置不正确?

【问题讨论】:

    标签: azure kudu


    【解决方案1】:

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

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

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

    【讨论】:

    • 这将运行服务器,但部署挂起(最终失败),因为服务器只是继续运行 - 它们永远不会完成(与大多数其他运行完成的脚本不同)
    【解决方案2】:

    尽管package.json 是我们几乎在任何地方都这样做的方式,但 Azure 并不尊重许多 package.json 操作,所以这些对我来说不是一个选项。

    您绝对是在正确的轨道上。我自己在这方面取得了成功,这就是我所做的:

    这是我在goto end 之前添加的deploy.cmd 的确切代码:

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

    唯一需要注意的是:对于我的场景,有时它似乎会挂起一段时间,但最终会继续

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-25
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2016-05-21
      • 2015-04-21
      相关资源
      最近更新 更多