自动化部署shell脚本,前端

需求描述

由于研发项目较小,团队人员较少,所以没有部署jenkins。需要写一个自动化部署的shell脚本,实现在本地执行脚本自动完成打包,上传、备份、重启等操作。

具体实现

1、在项目根目录新建名为deploy.sh的脚本文件,每次修改完代码,直接在根目录打开git命令窗口,执行sh deploy.sh

2、下面是实现代码

#!/bin/bash
set -e

#存储原始环境变量
OriginHOME=$HOME

export HOME=/home/remoteusername

if [[ $1 != "dev" && $1 != "test" && $1 != "pre" ]]
then
    echo -e "\033[41;37m 不存在 $1 环境  只有 -> dev(联调) test(测试) pre(预生产) \033[0m"
    exit
fi

#记录当前时间2022-10-0911:08:55
time=$(date "+%Y-%m-%d%H:%M:%S")
#备份文件名称 dist2022-10-0911:08:55
newFileName="dist"$time
#服务器上的路径
filePath=""

function deploy() {
    #上次包备份
    #连接服务器,对上次的包进行备份
    ssh -p 22 root@ip mv /xx/xx/xx/${filePath}/dist /xx/xx/xx/${filePath}/${newFileName}
    echo -e "\033[32m 连接成功,上传代码中... \033[0m"
    #复制dist文件上传到远程服务器
    scp -r dist root@ip:/xx/xx/xx/${filePath}
    echo -e "\033[32m 代码上传成功 \033[0m\n"
    #重启nginx
    ssh -p 22 root@ip '/xx/xx/xx/nginx -s reload'
    echo -e "\033[32m nginx重启成功 \033[0m\n"
}

function build() {
    #执行打包命令
    yarn build:prod

    #-e\033[32m设置文字前景色绿色
    echo -e "\033[32m 打包完毕 \033[0m"
    echo -e "\033[32m 连接 $1 服务器 \033[0m"

    if [ $1 == "dev" ];then
      filePath="联调环境的包存放文件名"
    elif [ $1 == "test" ];then
      filePath="测试环境的包存放文件名"
    elif [ $1 == "pre" ];then
      filePath="预生产环境的包存放文件名"
    else
        echo -e "您输错环境名称了吧..."
        exit
    fi

    deploy
}


build $1



3、由于本地客户端无法安装sshpass或except来实现免密登录,你可以在客户端生成ssh公钥并把它放在服务器上,来完成免密登录。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值