如何使用 Jenkins 重新启动 PM2



我正在使用PM2在Linux服务器上运行我的node.js应用程序,

配置文件如下所示:
PM2 start mywebsite.config.js

一切都很好。但是现在我想把詹金斯加到图片中。我正在使用 Jenkinsfile 在 Jenkins 中运行一个管道项目。除了最后一个命令外,所有工作正常,该命令应重新启动应用程序以使新版本上线:

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 restart all,您需要:

  1. 配置您的系统以从 jenkins 运行 sudo(https://sgoyal.net/2016/11/18/run-a-shell-from-jenkins-using-sudo-ubuntu/(

  2. 创建一个指向 .pm2/文件夹的符号链接,在我的情况下(Ubuntu(,它在/root/.pm2 处,所以我运行

sudo ln -s /root/.pm2/ /var/lib/jenkins/

注意:/var/lib/jenkins 如果是默认的 jenkins 根目录,你可以在 Jenkins 配置上检查你的

  1. 之后,您可以转到 Jenkins 并设置一个 shell 命令,就我而言,我做到了:

#!/bin/sh echo "RESTARTING ALL" sudo pm2 restart all echo "ALL RESTARTED"

注意:如果您的 jenkins 根目录中已经有一个 .pm2 文件夹,请重命名它,以便您可以执行符号链接

希望这有帮助

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

BUILD_ID=dontKillMe PM2 start mywebsite.config.js

Jenkins 杀死了由构建创建的 pm2 守护进程。你应该输入关键字以防止 Jenkins 杀死守护进程。

最新更新