node.js - 如何使用jenkins重启PM2?

标签 node.js jenkins pm2

我正在使用 PM2 在 linux 服务器上运行我的 node.js 应用程序,并带有一个配置文件,如下所示:

PM2 start mywebsite.config.js

一切都很好。但现在我想在图片中添加 Jenkins 。
我正在 jenkins 中运行一个管道项目,使用 Jenkinsfile。
一切正常,除了最后一个命令,应该重新启动应用程序,以使新版本生效:
stage('Restart PM2') {  
  steps {
    sh 'pm2 restart all'  }
  }
}

并且此命令失败。这是日志输出:
+ pm2 restart all 
Use --update-env to update environment variables 
[PM2][WARN] No process found 
< empty pm2 log table here> 
Use `pm2 show <id|name>` to get more details about an app

我知道 PM2 正在为每个用户工作。意味着,运行第一个命令 (start) 的用户也应该运行重启。
但如何做到这一点?

最佳答案

与其通过 jenkins 代码重新启动 PM2,不如让 PM2 使用 watch 标志自行完成。在您的配置文件中,将 watch 设置为 true。
您可能想要添加一个名为 watch-ignore 的相对较新的标志。这是一个数组, watch 会忽略文件。将您的日志文件和错误文件添加到此列表中。否则,任何记录的信息都会导致您的 Node 应用程序无休止地重新启动。
对配置文件进行这些更改后,再次使用配置运行 pm2。从 Jenkinsfile 中删除重新启动代码,您不再需要它了,pm2 将检测到新版本并重新加载应用程序!

关于node.js - 如何使用jenkins重启PM2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56616111/

相关文章:

java - 尝试通过 Java 库连接时 Jenkins 连接失败

javascript - Websocket 如何连接到集群内正确的子进程?

javascript - Node js - 返回从sequelize数据库读取的对象数组的函数

javascript - ESLint 与 Babel plugin-proposal-export-default-from

jenkins - 如何使用动态数据在 Jenkins 管道中构建并行和顺序阶段的组合

Ubuntu 14.04 - 重启后 pm2 启动不启动

node.js - 有时 pm2 不输出时间戳

javascript - 如何让 'get' 请求在 NodeJS 中按计划运行?

node.js - Node async.series 问题

windows - 如何在 Windows 上通过 SSH 自动运行命令