如何使用jenkins重启pm2?
How to use jenkins to restart 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 按用户工作。意思是,运行 第一个命令(启动)的用户也应该 运行 重新启动。
但如何做到这一点?
与其通过你的 jenkins 代码重启 PM2,不如让 PM2 使用 watch 标志自行完成。在您的配置文件中,将 watch 设置为 true。
您可能想要添加一个名为 watch-ignore 的相对较新的标志。那是一个数组,其中包含手表要忽略的文件。将您的日志文件和错误文件添加到此列表。否则,任何记录的信息都会导致您的节点应用程序无休止地重新启动。
在对配置文件进行这些更改后,运行 pm2 再次使用配置。从 Jenkinsfile 中删除重启代码,您不再需要它,pm2 将检测新版本并重新加载应用程序!
从 Jenkins 到 运行 pm2 restart all
你需要:
将您的系统配置为 运行 来自 jenkins 的 sudo
(https://sgoyal.net/2016/11/18/run-a-shell-from-jenkins-using-sudo-ubuntu/)
为 .pm2/ 文件夹创建一个符号 link,在我的例子中(Ubuntu)它位于 /root/.pm2 所以我 运行
sudo ln -s /root/.pm2/ /var/lib/jenkins/
注意:/var/lib/jenkins 如果是默认的 jenkins 根目录,你可以在 Jenkins 配置中检查你的
- 之后你可以去 jenkins 并设置一个 shell 命令,在我的例子中我做了:
#!/bin/sh
echo "RESTARTING ALL"
sudo pm2 restart all
echo "ALL RESTARTED"
注意:如果您的 jenkins 根目录中已有 .pm2 文件夹,请重命名它,以便您可以执行符号 link
希望对您有所帮助
BUILD_ID=dontKillMe PM2 start mywebsite.config.js
Jenkins 终止了由构建创建的 pm2 守护进程。
您应该放置关键字以防止 Jenkins 杀死守护进程。
我正在 运行使用 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 按用户工作。意思是,运行 第一个命令(启动)的用户也应该 运行 重新启动。 但如何做到这一点?
与其通过你的 jenkins 代码重启 PM2,不如让 PM2 使用 watch 标志自行完成。在您的配置文件中,将 watch 设置为 true。 您可能想要添加一个名为 watch-ignore 的相对较新的标志。那是一个数组,其中包含手表要忽略的文件。将您的日志文件和错误文件添加到此列表。否则,任何记录的信息都会导致您的节点应用程序无休止地重新启动。 在对配置文件进行这些更改后,运行 pm2 再次使用配置。从 Jenkinsfile 中删除重启代码,您不再需要它,pm2 将检测新版本并重新加载应用程序!
从 Jenkins 到 运行 pm2 restart all
你需要:
将您的系统配置为 运行 来自 jenkins 的 sudo (https://sgoyal.net/2016/11/18/run-a-shell-from-jenkins-using-sudo-ubuntu/)
为 .pm2/ 文件夹创建一个符号 link,在我的例子中(Ubuntu)它位于 /root/.pm2 所以我 运行
sudo ln -s /root/.pm2/ /var/lib/jenkins/
注意:/var/lib/jenkins 如果是默认的 jenkins 根目录,你可以在 Jenkins 配置中检查你的
- 之后你可以去 jenkins 并设置一个 shell 命令,在我的例子中我做了:
#!/bin/sh
echo "RESTARTING ALL"
sudo pm2 restart all
echo "ALL RESTARTED"
注意:如果您的 jenkins 根目录中已有 .pm2 文件夹,请重命名它,以便您可以执行符号 link
希望对您有所帮助
BUILD_ID=dontKillMe PM2 start mywebsite.config.js
Jenkins 终止了由构建创建的 pm2 守护进程。 您应该放置关键字以防止 Jenkins 杀死守护进程。