shell脚本部署流程
第一步:要先登录远端服务器
第二步:在远端服务器下创建项目文件地址
第三步:清空远端服务下的文件
第四步:将本地的文件上传到指定的地址
第五步:解压上传的文件,并重新运行项目

创建一个和src同级别的文件 build.sh 文件

!/bin/bash
# 添加 ssh key 到远程服务器

  1. # 服务器备注:172.xx.xx.xx /data/wwwroot
  2. # cat ~/.ssh/id_rsa.pub:本地的ssh存放地址,需要根据自己的地址做调整
  3. # 6xxx:端口号, @172.xx.xx.xx:服务器地址;
  4. # cat ~/.ssh/id_rsa.pub | ssh -p 6xxx root@172.xx.xx.xx "cat >> ~/.ssh/authorized_keys"
  5. # cat ~/.ssh/id_rsa.pub | ssh root@172.xx.xx.xx "cat >> ~/.ssh/authorized_keys"

将远程备份到本地

  1. # motolive.58moto.com:远程文件名
  2. # motolive.58moto.com:存放的本地文件名
  3. # scp -r -P 6xxx root@1xx.xx.xx.xx:/data/wwwroot/motolive.58moto.com motolive.58moto.com

连接服务器:

  1. # ssh -p 6xxx root@1xx.xx.xx.xx
  2. # cd /data/wwwroot/motolive.58moto.com
  3. # 118.xx.xx.xx
  4. # jenkins
  5. # ssh root@1xx.xx.xx.xx

部署说明:
# ./build.sh zhu 主版本 release 分支
# ./build.sh release 测试 release 分支
# ./build.sh 开发 develop 分支
# 只部署:
# ./build.sh zhud 主版本 release 分支
# ./build.sh released 测试 release 分支
# ./build.sh devd 开发 develop 分支

  1. opt=$1 # 部署环境
  2. port=6xxx # 默认测试环境端口 6xxx
  3. target=1xx.xx.xx.xx # 默认测试环境服务器
  4. if [[ $opt == release ]] || [[ $opt == released ]]
  5. then
  6. target=1x.xx.xx.xx # 密码:xxx
  7. elif [[ $opt == zhu ]] || [[ $opt == zhud ]]
  8. then
  9. target=1xx.xx.xx.xx # 密码:xxx
  10. fi
  11. if [[ -z $opt ]] || [[ $opt == release ]] || [[ $opt == zhu ]]
  12. then

rm -rf motolive.58moto.com ./dist:删除本地 motolive.58moto.com/dist路径下的所有文件
#cp -R ./dist/motolive.58moto.com motolive.58moto.com: 将./dist路径下的motolive.58moto.com 拷贝到当前##目录下并创建motolive.58moto.com
#cd motolive.58moto.com && tar -czf motolive.58moto.com.tar.gz
: 进入#motolive.58moto.com中,并生成#一个motolive.58moto.com.tar的压缩包
#mv motolive.58moto.com.tar.gz ../ && cd .. && rm -rf motolive.58moto.com : 移动# # # #motolive.58moto.com.tar.gz压缩包到上级目前,并进入文件中,然后删除以前的压缩包

  1. echo 开始打包....
  2. rm -rf motolive.58moto.com* ./dist
  3. npm run build;
  4. cp -R ./dist/motolive.58moto.com motolive.58moto.com
  5. cd motolive.58moto.com && tar -czf motolive.58moto.com.tar.gz * && mv motolive.58moto.com.tar.gz ../ && cd .. && rm -rf motolive.58moto.com
  6. fi
  7. echo 开始上传包....
  8. # scp -r -P ${port} motolive.58moto.com.tar.gz root@${target}:/data/wwwroot/motolive.58moto.com:
  9. # 将本地的文件上传到远端指定服务器的指定路径下
  10. scp -r -P ${port} motolive.58moto.com.tar.gz root@${target}:/data/wwwroot/motolive.58moto.com
  11. echo 开始部署
  12. ssh -p ${port} root@${target}<<EOF
  13. echo 成功登录到远程服务器 ${target}
  14. cd /data/wwwroot/motolive.58moto.com
  15. echo 解压 motolive.58moto.com.tar.gz
  16. tar -xzf motolive.58moto.com.tar.gz;
  17. rm -rf motolive.58moto.com.tar.gz;
  18. EOF
  19. echo 部署完成
  20. echo -----------------------------------
  21. exit 0
  22. tar -czf m.jddmoto.com

注意点:文件打包上传的方式,需要根据具体的项目情况做调整