jekins vue 发布脚本 shell
#!/bin/bash # Description:对应jenkins上的shell脚本 # Author:yangdejian # CompeleteTime:2021-03-10 start_time=$(date "+%Y-%m-%d %H:%M:%S") script_root="/root/consignmentweb" serv_path="/home/jsxt-admin-test" project_name="xxx系统(vue)" subscriber="oth4257RpdizMwyWEPpImC1nB8EA" # 暂时只通知给我 # 处理jenkins配置的输入参数 # 处理测试环境 env="test" if [[ "${in_env}" = "生产环境" ]]; then env="prod" fi # >>>>>>>>>>>>>>>>>>>>>>>> 函数块 start >>>>>>>>>>>>>>>>>>>>>>>>> exit_with_error(){ echo "报警给订阅者" first=${project_name}"发布异常" keyword1="开始于["${start_time}"]的Jenkins自动构建任务中断,详情参见jenkin构建日志" keyword2="中断原因:"$1 remark="具体异常原因需要查看构建日志" # send_msg "$first" "$keyword1" "$keyword2" "$remark" "#8B008B"(不想接收发布结果了) exit 1 } exit_succ(){ echo "构建成功,通知订阅者" local end_time=$(date "+%Y-%m-%d %H:%M:%S") local start_seconds=$(date --date="$start_time" +%s) local end_seconds=$(date --date="$end_time" +%s) local consume=$((end_seconds-start_seconds)) local first=${project_name}"自动发布" local keyword1="Jenkins自动发布参数如下\ngit分支:"${in_branch}"\n环境:"${in_env}"\n开始于:"${start_time}"\n总耗时:"${consume}"秒" local keyword2="发布成功" local remark="访问地址:http://jsxtest.100bm.cn/login" # send_msg "$first" "$keyword1" "$keyword2" "$remark" "#3AB54A"(不想接收发布结果了) exit 0 } send_msg(){ local first=$1 local keyword1=$2 local keyword2=$3 local keyword3=$(date "+%Y-%m-%d %H:%M:%S") local remark=$4 local color=$5 curl -X "POST" "http://xxx/wechat/v1/common/direct/template/msg" \ -H "Content-Type: application/json" \ -d@- \ <<EOF { "appId":"wx90817bbaf76cb773", "templateId":"ByCWa12weOi4W3iqGohhKdxNHtBxW8OYjJm5fBF_pmw", "toUsers":"${subscriber}", "data":{ "first":{"color":"${color}","value":"${first}"}, "keyword1":{"color":"${color}","value":"$2"}, "keyword2":{"color":"${color}","value":"${keyword2}"}, "keyword3":{"color":"${color}","value":"${keyword3}"}, "remark":{"color":"${color}","value":"${remark}"}} } EOF echo -e "\n" } # <<<<<<<<<<<<<<<<<<<<<<<< 函数块 end <<<<<<<<<<<<<<<<<<<<<<<<< # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>> 主流程 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> echo "--------------------- 开始[${project_name}]的远程构建 ---------------------" # jenkins编译项目前,启动环境变量(~/.bash_profile ~/.bashrc /etc/profile) # 不继承linux环境变量,会导致在执行shell脚本,提示命令找不到 source /etc/profile echo "1. 拉取最新的指定分支的代码..." cd ${script_root} && git pull && git checkout ${in_branch} && git pull if [[ "$?" != "0" ]]; then exit_with_error "git拉取代码异常!" fi echo "2. 更新依赖库..." yarn install if [[ "$?" != "0" ]]; then exit_with_error "依赖库更新异常!" fi echo "3. 开始构建..." yarn build:"${env}" if [[ "$?" != "0" ]]; then exit_with_error "构建异常!" fi echo "4. 远程备份原文件..." ssh root@192.168.x.x <<EOF echo "远程后的当前机器ip:" ifconfig eth0 | grep -w "inet" if [ -d "$serv_path" ]; then echo "备份目录[${serv_path}]到[/root/jsxt-admin-test-bak]" mv ${serv_path} /root/jsxt-admin-test-bak/$(date "+%Y%m%d_%H%M%S") echo "备份完成" else echo "目录[${serv_path}]不存在,无需备份" fi exit EOF echo "5. 发布最新的静态文件到目标服务器..." ifconfig eth0 | grep -w "inet" | awk '{ print "之后命令执行所在的IP为:"$2}' scp -r $script_root"/dist" "root@192.168.x.x:"${serv_path} if [[ "$?" != "0" ]]; then exit_with_error "发布异常!" fi echo "6. 构建完成!" exit_succ
配置的自定义参数: