deploy/redeploy 后获取 PM2 应用程序的正确状态
get correct status of PM2 application after deploy/redeploy
我正在尝试使用 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) 您可以从 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.
我正在尝试使用 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) 您可以从 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.