记录使用jenkins部署node项目,如何在shell文件中执行npm命令

377 阅读1分钟

上一篇:记录用pm2启动nestjs项目 - 掘金 (juejin.cn)

介绍

  1. 先在jenkins服务器打包项目
  2. 连接目标服务器,运行.sh文件
  3. 在目标服务器启动(重启)node项目

jenkins打包命令

node -v
npm -v
yarn
npm run build
tar -cvzf ./dist.tar.gz ./dist ./package.json 
rimraf node_modules

目标服务器的shell文件

/root/deploy_web_root_for_node.sh

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_181/bin:/root/bin:/bin
PATH=.:$PATH
export PATH

projectname=$1
topath=$2
pm2Name=$3

echo $projectname $topath

if [ -d "$topath" ] ; then 
cd $topath

rm -rf ./dist ./package.json

wget -P ./ http://fspace.****.com/$projectname/dist.tar.gz

tar -xzvf dist.tar.gz

rm -rf dist.tar.gz

yarn

pm2 restart $pm2Name

fi

在shell文件中执行node相关命令 node、npm 等

上一步 .sh文件中需要执行,yarn、pm2命令

初次执行报错了:

yarn: command not found
pm2: command not found

解决办法是创建软连接:

先查看node安装在哪:

which node

得到 /root/.nvm/versions/node/v16.15.1/bin/node

创建软连接:

sudo ln -s /root/.nvm/versions/node/v16.15.1/bin/node /usr/local/bin/node/

yarn、pm2 同理,按照上面的方式,把node替换成yarn、pm2就可以了

参考:

windows 执行 sh 脚本, 找不到 npm 命令_没有npm命令_当代词圣李白的博客