如何使用jenkins重新启动PM2?

时间:2019-06-16 04:35:25

标签: node.js 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。这意味着,运行第一个命令(启动)的用户也是应该运行重新启动的用户。 但是该怎么做?

2 个答案:

答案 0 :(得分:1)

要从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文件夹,请将其重命名,以便进行符号链接

希望这会有所帮助

答案 1 :(得分:0)

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