GitHub Actions执行pm2 restart时报'pm2: command not found'求助
解决GitHub Actions中pm2命令找不到的问题
问题分析
你遇到的pm2: command not found本质有两种核心原因:
- GitHub托管的Runner是全新临时环境,即便全局安装pm2,当前Shell的PATH可能未及时更新,导致命令无法被识别;
- 你错误地在云端Runner环境中执行pm2重启操作——Runner和你的部署服务器是完全独立的环境,根本无法访问服务器上的pm2进程。
可行解决方案
方案1:若确实要在Runner环境中使用pm2(极少场景)
直接用npx调用pm2,无需全局安装,npx会自动处理路径依赖:
- name: Service restart run: npx pm2 restart 2
或者先全局安装并强制刷新环境变量PATH:
- name: Install pm2 globally run: | npm install -g pm2 echo "export PATH=$PATH:$(npm prefix -g)/bin" >> $GITHUB_ENV - name: Service restart run: pm2 restart 2
方案2:重启部署服务器上的pm2(绝大多数CI/CD场景)
这才是重启服务的正确逻辑——通过SSH连接到你的部署服务器,在服务器本地环境执行pm2命令。修改工作流如下:
on: push: branches: - features/testing-ci-cd jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 # 可选:在Runner上完成构建后将产物传到服务器,或直接在服务器上执行构建 - name: Deploy via SSH and restart pm2 uses: appleboy/ssh-action@v0.1.5 with: host: ${{ secrets.SERVER_HOST }} # 服务器IP/域名,存入GitHub Secrets username: ${{ secrets.SERVER_USER }} # 服务器登录用户名 key: ${{ secrets.SERVER_SSH_KEY }} # 服务器SSH私钥,存入GitHub Secrets script: | cd /path/to/your/project git pull origin features/testing-ci-cd npm install npm run build pm2 restart 2
注意事项:
- 将
/path/to/your/project替换为服务器上项目的实际路径; - 提前在GitHub仓库
Settings > Secrets and variables > Actions中添加SERVER_HOST、SERVER_USER、SERVER_SSH_KEY三个机密变量,避免明文暴露敏感信息。
额外优化建议
你原工作流中的Getting latest code步骤完全冗余——actions/checkout@v2已经将指定分支代码拉取到Runner环境,再次执行git pull不仅没必要,还可能因干净环境引发冲突,建议删除该步骤。
内容的提问来源于stack exchange,提问作者user15421419
相关产品推荐
相关产品推荐

