问题场景
最近一直在整前端、python代码,最高兴的事情就是代码本地测试没问题了,就可以打包发到线上去了。但是每次前端代码的更新都是那几个重复性的步骤:
npm run build
cd dist
scp -r ./ root@xxxxxx:xxxxxxx/frontend/ # 需要输入密码
手动的敲,然后等待输入密码,重复性的工作实在是让我觉得厌烦。有没有一种方法可以实现自动化的部署和发布呢?我想到了shell脚本。
解决方案
我模仿iterm2的自动登录,使用到了spawn
、expect
、send
等实现了自动的密码输入验证,之后上传需要上传的文件。
脚本的内容如下:
#!/usr/bin/expect -f
set PASSWORD xxxxx
spawn rsync -e ssh -av --exclude= ./dist/ root@xxxxxx:/x/frontend/xxxxx
expect "*password:"
send "$PASSWORD\r"
expect eof
这里需要注意脚本的解释器为expect,且需要为该脚本(我命名为deploy.sh
)添加可执行的权限。
chmod +x ./deply.sh
添加scripts
命令
在package.json
中添加如下命令:
部署的之后只需要执行:
npm run build_upload
即可在项目打包之后上传到服务器中,整个过程只需要关注控制台输出即可。