正常前端代码开发完成,部署代码需连接xshell或者SFTP工具进入到项目目录,更换静态文件才能完成部署。为提高前端部署效率,不再手动通过工具连接远程替换代码,在本地使用脚本完成远程连接及代码部署。
环境搭建
因为使用脚本登录远程服务器,需使用到ssh的免密码登录(基于密钥),实现流程如下:
1、在客户端生成一对密钥(如已生成过,可跳过此步骤)
基于空口令生成一个新的ssh密钥,以实现无密码登录:
1
| ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
|
参数说明:
-t 加密算法类型,这里是使用rsa算法
-P 指定私钥的密码,不需要可以不指定
-f 指定生成秘钥对保持的位置
2、将客户端公钥发送到服务器,使用ssh-copy-id
1
| ssh-copy-id root@100.100.100.100 -p 6666
|
3、配置自定义连接名,ssh的用户配置文件是放在当前用户根目录下的 .ssh 文件夹里(~/.ssh/config,不存在则新创建一个),其配置写法如下:
1 2 3 4 5
| Host pptest HostName 115.29.185.212 Port 6666 User www IdentityFile ~/.ssh/id_rsa
|
脚本
1,在项目根目录处新建配置文件 deploy.conf
方便管理
1 2 3 4 5 6 7 8 9 10 11
| // 生产环境 prod_branch=master //需部署的代码分支 prod_host=prodName // 自定义连接名 prod_user=www //服务器用户名 prod_path=webstatic //需部署的服务器目录
// 测试环境 test_branch=master test_host=testName test_user=www test_path=webstatic
|
2,在项目根目录新建脚本文件 deploy.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #!/bin/sh
env=''
if [ x$1 != x ];then env=$1 else env='prod' fi
curr_branch=`git symbolic-ref --short -q HEAD` echo '当前工作分支 => '${curr_branch}
echo '读取配置文件:' deploy_branch=`sed '/^'${env}_branch'=/!d;s/.*=//' deploy.conf` deploy_host=`sed '/^'${env}_host'=/!d;s/.*=//' deploy.conf` deploy_user=`sed '/^'${env}_user'=/!d;s/.*=//' deploy.conf` deploy_path=`sed '/^'${env}_path'=/!d;s/.*=//' deploy.conf` deploy_mark=`sed '/^'${env}_mark'=/!d;s/.*=//' deploy.conf` echo '分支 => '${deploy_branch} echo '地址 => '${deploy_host} echo '用户 => '${deploy_user} echo '路径 => '${deploy_path}
echo '储存当前修改' git stash
echo '切换到需发布的分支 => '${deploy_branch} git checkout $deploy_branch
echo '编译项目' npm run build
echo '备份中' ssh ${deploy_host} "rm -rf ./"${deploy_path}"/back.tar" ssh ${deploy_host} "tar -cvf "${deploy_path}"/back.tar "${deploy_path}"/dist"
echo '上传中' scp -r ./dist ${deploy_host}:${deploy_path}
echo '切回工作分支 => '${curr_branch} git checkout $curr_branch
echo '释放修改' git stash pop
echo '部署完成'
|
3,执行部署, 测试环境:sh ./deploy.sh test
,生产环境:sh ./deploy.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sh ./deploy.sh test 当前工作分支 => master 读取配置文件: 分支 => master 地址 => pptest 用户 => www 路径 => pp.huodao.hk
编译项目 ... 备份中 ... 上传中 ... 部署成功
|