Github 操作错误:bash:第 3 行:npm:找不到命令

rah*_*ver 6 git continuous-integration node.js npm github-actions

我正在尝试通过 ssh 将 nodejs 应用程序从 github 部署到远程 ubuntu 服务器。这是我的 main.yml:

name: Node Github CI

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Node Js
      uses: actions/setup-node@v1
       
    - name: SSH and deploy node app
      uses: appleboy/ssh-action@master        
      with:
        host: ${{ secrets.SERVER_IP }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SERVER_KEY }}
        script: |
          service myservice stop
          cd leancrm-backend
          git pull git://myuser@github.com/mycmp/myapp-backend.git master
          npm install
          service myservice start
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到这个错误:

======CMD======
service myservice stop
cd myapp-backend
git pull git://myuser@github.com/mycmp/myapp-backend.git master
npm install
service myservice start

======END======
err: fatal: Unable to look up myuser@github.com (port 9418) (Name or service not known)
err: bash: line 3: npm: command not found
==============================================
Run Code Online (Sandbox Code Playgroud)

截屏: 在此处输入图片说明

san*_*glt 8

原因:

服务器节点环境我使用nvm,而nvm不会将节点环境安装在/usr/local/bin/目录下,导致sudo找不到对应的指令,最后创建软连接解决

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm" 

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/pm2" "/usr/local/bin/pm2"

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/yarn" "/usr/local/bin/yarn"
Run Code Online (Sandbox Code Playgroud)

你可以测试“sudo npm -v”


小智 7

由于您已连接到您的服务器,我假设您已经在那里拥有 repo,因此您只需要执行 git pull。

您还应该在脚本的开头添加这些行:

export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)

我的 yml 文件最后看起来像这样:

script: |
  git pull
  export NVM_DIR=~/.nvm
  source ~/.nvm/nvm.sh                
  npm install
  npm run start_server
Run Code Online (Sandbox Code Playgroud)


Max*_*Max 3

你的第一步

name: Node Js
      uses: actions/setup-node@v1
Run Code Online (Sandbox Code Playgroud)

在 GitHub 构建运行器上设置 Node.js。然而你的第二步......

 name: SSH and deploy node app
      uses: appleboy/ssh-action@master        
      with:
        host: ${{ secrets.SERVER_IP }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SERVER_KEY }}
        script: |
          service myservice stop
          cd leancrm-backend
          git pull git://myuser@github.com/mycmp/myapp-backend.git master
          npm install
          service myservice start
Run Code Online (Sandbox Code Playgroud)

...通过 SSH 连接到您的服务器,然后在那里运行脚本指令。您还尝试在那里查看您的源代码存储库。

您可能想要做的是在 GitHub 构建运行器上查看您的存储库...

- name: Checkout repo
  uses: actions/checkout@v2
Run Code Online (Sandbox Code Playgroud)

..然后npm install在那里运行,然后scp输出到您的服务器,最后ssh到该机器并重新启动您的服务。