day110 自动化部署的shell脚本

这个shell脚本为线上代码部署的脚本,此脚本适用于小公司。而大公司会有专门的一套自动化部署的程序,比如使用jenkins部署,这个是比较常见的。

#!/bin/bash
#首先在code里面执行下面命令
#git checkout [email protected]:/demo.git
CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%Y-%m-%d-%H-%M")

#SHELL
CODE_DIR="/deploy/code/"
CONFIG_DIR="/deploy/config/"
TAR_DIR="/deploy/tar/"
TMP_DIR="/deploy/tmp/"

usage(){
    echo $"usage $0 [deploy | rollback-list | rollback-pro version]"
}

#获取代码,并拷贝到临时目录下
git_pro(){
    echo "begin git pull"
    cd $CODE_DIR && git pull
    API_VERL=$(git show | grep commit | cut -d" " -f2)  #git show 为显示各种类型的对象
    API_VER=$(echo ${API_VERL:0:6})
    cp -a "$CODE_DIR" $TMP_DIR

}

#添加配置文件
config_pro(){
    echo "add pro config"
    /bin/cp "$CONFIG_DIR/*" $TMP_DIR/demo/
    TAR_VER="${API_VER}"-"{$CTIME}" 
    cd $TMP_DIR && /bin/mv demo pro_demo_"$TAR_VER"
}

#打包代码
tar_pro(){
    echo "tar pro"
    cd $TMP_DIR && tar -czf pro_demo_"$TAR_VER".tar.gz pro_demo_"$TAR_VER"
}

#将打包好的代码上传到正式环境的tmp目录
scp_pro(){
    /bin/cp $TMP_DIR/pro_demo_"$TAR_VER.tar.gz /tmp
}

#部署
deploy_pro(){
    cd /tmp/ && tar -zxf pro_demo_"$TAR_VER".tar.gz
    rm -f /var/www/html/demo
    ln -s /tmp/pro_demo_"$TAR_VER" /var/www/html/demo
}

#测试
test_pro(){
    echo 'test ok'
}

#回滚,列出所有打包好的代码
rollback_list(){
    ls -l /tmp/*.tar.gz
}

#删除软连接,重新建立软连接
rollback_pro(){
    rm -f /var/www/html/demo
        ln -s /tmp/$1 /var/www/html/demo
}

#执行程序
main(){
    case $1 in
        deploy)
            git_pro
            config_pro
            tar_pro
            scp_pro
            deploy_pro
            test_pro
            ;;
        rollback-list)
            rollback_list
            ;;
        rollback-pro)
            rollback_pro $2
            ;;
        *)
            usage:
        esac
}
main $1 $2

你可能感兴趣的:(day110 自动化部署的shell脚本)