部署/重新部署后获取PM2应用程序的正确状态

时间:2016-06-21 14:02:05

标签: jenkins continuous-deployment pm2

我尝试将PM2用于部署目的,因此在部署过程结束时我做了

pm2 startOrReload staging.json --env preprod  

我得到了这个:

16:26:12 ‘staging/current’ -> ‘/srv/pb/dev/v0.0.6-85-g755a611’
16:26:12 [PM2] Applying action reloadProcessId on app [pb1](ids: 0)
16:26:13 [PM2] [pb1](0) ✓
16:26:13 ┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐
16:26:13 │ App name │ id │ mode │ pid   │ status │ restart │ uptime │ memory      │ watching │
16:26:13 ├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤
16:26:13 │ pb1      │ 0  │ fork │ 30180 │ online │ 111     │ 0s     │ 19.805 MB   │  enabled │
16:26:13 └──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘  

您可以注意到状态是否在线,无论部署是否成功;
并且正在将Jenkins构建成为成功的标志。如果你做了

,请立即进行
pm2 list  

您获得了正确的状态离线

那么有没有办法通过API或其他东西获得正确的状态,以便我可以将构建标记为失败

1 个答案:

答案 0 :(得分:1)

1)您可以从CLI获取JSON格式的当前状态:

pm2 jlist
pm2 prettylist

2)或者您可以通过编程方式连接到pm2实例:

var pm2 = require('pm2');

pm2.connect( function(err) {
  if (err) process.exit();

  pm2.list( function(err,list) {
    list.forEach( function(e) {
      console.log( e.name, e.pm2_env.status );
    });
    pm2.disconnect();
  });

});

3)或者您可以使用keymetrics monitoring