You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions执行pm2 restart时报'pm2: command not found'求助

解决GitHub Actions中pm2命令找不到的问题

问题分析

你遇到的pm2: command not found本质有两种核心原因:

  1. GitHub托管的Runner是全新临时环境,即便全局安装pm2,当前Shell的PATH可能未及时更新,导致命令无法被识别;
  2. 你错误地在云端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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:08:07