nuxt项目使用shell脚本自动发布代码

  最近使用nuxt开发了个人博客,不同于平常Vue开发的静态项目将代码打包推到服务器即可。nuxt项目是服务端渲染,需要在服务器安装依赖启动http服务,每次发布到服务器都要远程连接服务器,在服务器执行更新代码,安装依赖,启动服务,很是麻烦。于是想使用shell脚本优化了这一流程,在此记录一下。

  受益于shell脚本的强大,可以通过ssh远程执行服务器命令,其实脚本方式和普通发布方式很像,只是把平时手动敲的代码变得自动而已。

  首先了解一下远程执行ssh命令的方法:

ssh username@ip << remotescript
远程命令1
远程命令2
remotescript

  如上所示,使用ssh命令,然后在两个remotescript(可以换为其它单词)中间的命令就会在远程服务器上执行。

  对于nuxt项目来说,更新代码提交后,远程服务器干的事情大概如下:

  1. 进入项目目录,拉代码
  2. 安装依赖
  3. 构建项目
  4. 关闭上次服务,重新启动服务

  将以上流程对应的指令写在remotescript内即可,保存为push.sh:

ssh root@wintc.top << remotescript
cd /home/lushg/blog-ssr
git pull origin master
yarn
yarn build
lsof -i:8000 | grep 8000 | awk '{ print \$2 }' | xargs kill -9
nohup yarn start &
remotescript

  为了避免发布时候忘记提交代码,可以在脚本前面加上git push。

  现在,要发布代码的时候就可以直接本地执行脚本即可:

sh push.sh

  一段时间等待后,代码就自动发布完成啦:

nuxt自动部署服务