zoukankan      html  css  js  c++  java
  • 山田预发环境发布脚本

    1.脚本发布

    发布服务器:山田master 

    脚本路径:/server/tools

    Master脚本结构:

    master备份文件在:/server/tools/backup

    backup备份都在文件在:/server/backup

    脚本使用方法:

    [root@iZ6weirh18lb3sov6mfxftZ tools]# sh release.sh
    Usage: release.sh [ deploy | rollback ] 目前可选择deokiy
    [root@iZ6weirh18lb3sov6mfxftZ tools]# sh release.sh deploy  该脚本存在加锁限制  只可同时执行一个任务

    [root@iZ6weirh18lb3sov6mfxftZ tools]# cat release.sh
    #!/bin/bash
    #v1
    # Date/Time Veriables
    LOG_DATE='date "+%Y-%m-%d"'
    LOG_TIME='date "+%H-%M-%S"'
      
    CDATE=$(date "+%Y-%m-%d")
    CTIME=$(date "+%H-%M-%S")
     
    NODE_LIST="8.209.252.22 47.91.31.1"
    #Shell Env
    SHELL_NAME="release.sh"
    SHELL_DIR="/server/tools"
    SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
    app_groups="/server/tools/app"
    LOGS="/server/tools/logs/${SHELL_NAME}.log"
    #Code Enb
    index="/usr/share/nginx/html/build"
    app_jar="/usr/local/esl/app"
    start_app="/usr/local/esl"
    LOCK_FILE="/tmp/release.lock"
     
    usage(){
        echo  $"Usage: $0 [ deploy | rollback ]"
    }
    writelog(){
            LOGINFO=$1
            echo "${CDATE} ${CTIME}: ${SHELL_NAME} : ${LOGINFO}" >> ${LOGS}
    }
     
    shell_lock(){
        touch ${LOCK_FILE}
    }
     
    shell_unlock(){
        rm -f ${LOCK_FILE}
    }
    rollback(){
        echo rollback
    }
    code_get(){
        writelog  "Front and back end backup of master"
        echo  Front and back end backup of master
        BACK="/server/tools/backup/html"
        cd $index
        tar zcf dist-$CDATE.tar.gz dist && mv dist-$CDATE.tar.gz $BACK
        Jar_Back="/server/tools/backup/jar"
        mv $app_jar/zk_esl_release.jar $Jar_Back/zk_esl_release$CDATE.jar 
    }
     
    release_push(){
        writelog  "Master front and back end Publishing";
        echo "Master front and back end Publishing "
        #rm -rf $app_jar/zk_esl_release.jar
        cp $app_groups/zk_esl_release.jar $app_jar
        #echo "Master发布前端"
        cd $index pwd && rm -rf dist
        tar xf  $app_groups/dist.tar.gz -C $index
    }
    code_scp(){
        writelog  "Start synchronously from the server jar package";
        ansible app -m copy -a "src=/usr/local/esl/app/zk_esl_release.jar dest=/server/backup backup=yes"
        ansible app -m file -a 'path=/usr/local/esl/app/zk_esl_release.jar state=absent'
        echo code_scp
        for node in $NODE_LIST;do
          scp $app_groups/zk_esl_release.jar    $node:/usr/local/esl/app/
        done
    }
     
    eslapp_start(){
      writelog "master backup01 backup02 Start Application"
      ansible start -m shell -a 'cd /usr/local/esl/ && docker-compose up -d --build'
    }
     
    main(){
        if [ -f ${LOCK_FILE} ];then
        echo "Deploy is running"  && exit;
        fi
        DEPLOY_METHOO=$1
     
        case $DEPLOY_METHOO in
        deploy)
               shell_lock;
               code_get;
               release_push;
               code_scp;
               eslapp_start;
            shell_unlock;
                ;;
        rollback)
                rollback;
                ;;
        *)
                usage;
        esac
    }
    main $1

    2.jenkins 调用脚本发布

       通过Jenkins执行前后端job即可

  • 相关阅读:
    分别使用Nginx反向代理和Haproxy调度器实现web服务器负载均衡
    CentOS7.4 源码编译安装LNMP
    LVS-DR+keepalived高可用群集
    Weex 和 Web 平台的差异
    Weex 和 Vue 2.x 的语法差异
    如何将原有 Weex 项目改造成 Vue 版本
    Vue 2.x 在 Weex 和 Web 中的差异
    使用 Vuex 和 vue-router
    使用 Vue 开发 Weex 页面
    weex快速上手
  • 原文地址:https://www.cnblogs.com/sseban/p/13750475.html
Copyright © 2011-2022 走看看