美文网首页
shell npm+vue+gradle+jar 本地自动打包上

shell npm+vue+gradle+jar 本地自动打包上

作者: labi3285 | 来源:发表于2018-12-17 09:16 被阅读142次

    说明:
    前后端分离的vue项目,为了解决跨域问题,需要部署到java web项目的resources/static目录下,打包流程:vue打包 >> copy resources >> java打包 >> 上传服务器 >> 环境预处理 >> 执行 >> 跟踪。
    网上查看了大量资料,每一步都是坑,需要做这个的,具有很好的参考价值。

    1、将以下脚本命名为deploy.sh,放在web项目和api项目所在目录的公共父级(方便找到路径),并配置相关参数
    2、执行

    chmod +x deploy.sh
    ./deploy.sh
    

    脚本内容:

    #!/bin/bash
    # by labi3285
    
    readonly name='???'
    readonly version='0.0.1'
    readonly web_path='/???'
    readonly web_name='???'
    
    readonly api_env_path='/???'
    readonly web_env_path='/???/index'
    
    readonly api_path='/???'
    readonly api_jar_name='???.jar'
    
    readonly serve_name='root'
    readonly serve_port='8080'
    readonly serve_passowrd='???'
    readonly serve_host='???.???.???.???'
    readonly serve_path="/???"
    
    # 初始化
    cd $(dirname $0)
    _work_path=$(pwd)   # 取到脚本目录
    _web_path="${_work_path}${web_path}"
    _web_dist_path="${_web_path}/dist"
    _api_path="${_work_path}${api_path}"
    _api_static_path="${_api_path}/src/main/resources/static"
    _api_jar_file="${_api_path}/build/libs/${api_jar_name}"
    _serve_project_path="${serve_path}/${name}"
    _serve_project_jar_file="${_serve_project_path}/${version}.jar"
    _serve_project_log_file="${_serve_project_path}/${version}.log"
    _serve_project_start_sh="${_serve_project_path}/start.sh"
    
    # def 远程服务器操作
    auto_ssh(){
        __host=$1
        __name=$2
        __password=$3
        __todo=$4
        /usr/bin/expect <<EOD
        set timeout 86400
        spawn ssh ${__name}@${__host} ${__todo}
        expect {
            "*yes/no*" {send "yes\r"; exp_continue}
            "*password:" {send "$__password\r"; exp_continue}
            "*Password:" {send "$__password\r"}
        }
    EOD
    }
    # def 上传远程服务器
    auto_scp() {
        __host=$1
        __name=$2
        __password=$3
        __src=$4
        __dest=$5
        /usr/bin/expect <<EOD
        set timeout 86400
        spawn scp ${__src} ${__name}@${__host}:${__dest}
        expect {
            "*yes/no*" {send "yes\r"; exp_continue}
            "*password:" {send "$__password\r"; exp_continue}
            "*Password:" {send "$__password\r"}
        }
    EOD
    }
    
    # 打包 vue
    echo -e "\033[32m vue 打包 \033[0m"
    cd ${_web_path}
    npm run build
    
    # 复制vue架包到java
    echo -e "\033[32m 复制vue架包到java \033[0m"
    cp -a "${_web_dist_path}/static" ${_api_static_path}
    cp -a "${_web_dist_path}/index.html" ${_api_static_path}
    
    # 打包 api
    echo -e "\033[32m java 打包 \033[0m"
    cd ${_api_path}
    gradle bootJar
    
    # 上传服务器
    echo -e "\033[32m vue 上传服务器 \033[0m"
    auto_ssh ${serve_host} ${serve_name} ${serve_passowrd} "mkdir -p ${_serve_project_path}"
    auto_scp ${serve_host} ${serve_name} ${serve_passowrd} ${_api_jar_file} ${_serve_project_jar_file}
    
    # 配置服务脚本
    echo -e "\033[32m 配置服务脚本 \033[0m"
    touch .service_start_cache.sh
    echo "#!/bin/bash" > .service_start_cache.sh
    echo "kill -9 \$(netstat -nlp | grep :${serve_port} | awk '{ print \$7 }' | awk -F\"/\" '{ print \$1 }')" >> .service_start_cache.sh
    echo "nohup java -jar ${_serve_project_jar_file} >> ${_serve_project_log_file} &" >> .service_start_cache.sh
    echo "tail ${_serve_project_log_file}" >> .service_start_cache.sh
    auto_scp ${serve_host} ${serve_name} ${serve_passowrd} .service_start_cache.sh ${_serve_project_start_sh}
    
    # 启动服务
    echo -e "\033[32m 启动服务 \033[0m"
    auto_ssh ${serve_host} ${serve_name} ${serve_passowrd} "chmod +x ${_serve_project_start_sh}"
    auto_ssh ${serve_host} ${serve_name} ${serve_passowrd} "${_serve_project_start_sh}"
    
    # OK!!
    echo -e "\033[32m 完成 \033[0m"
    echo -e "\033[32m 上传jar路径:${_serve_project_jar_file} \033[0m"
    echo -e "\033[32m log路径:${_serve_project_jar_file} \033[0m"
    echo -e "\033[32m start脚本路径:${_serve_project_start_sh} \033[0m"
    echo -e "\033[32m api测试地址:${serve_host}:${serve_port}${api_env_path} \033[0m"
    echo -e "\033[32m web测试地址:${serve_host}:${serve_port}${web_env_path} \033[0m"
    
    

    相关文章

      网友评论

          本文标题:shell npm+vue+gradle+jar 本地自动打包上

          本文链接:https://www.haomeiwen.com/subject/hhxqkqtx.html