【CICD】java程序自动编译发布项目脚本

jenkins shell

#!/bin/bash
#tomcat服务器上发布java程序
#定义发布环境变量
war_bak="/data/tomcat/test/bak"
tomcat_deploy="/data/tomcat-${deploy}/webapps"
#WAR_PATH="${WORKSPACE}/${MODULE_NAME}/target/*.war"
WAR_PATH="${WORKSPACE}/target/*.war"

#发布主机IP,这里使用一台,正式、测试、回滚使用不同路径区分
test_host="10.42.14.178"
stag_host=""
port="8083"

#生成回溯日志
mkdir -p /var/jenkins_home/cicd-log
echo "构建环境:${deploy} 项目名称:${JOB_NAME} 构建时间:`date +%F` 本次上线版本:${GIT_COMMIT}" >>/var/jenkins_home/cicd-log/${JOB_NAME}.log

#部署状态与回退

#判断git是否为空,如果是为空进行提示
if [ "${git}" = "" ];then

echo "请输入git commit md5号"
exit 1

else

## 判断发布 or 回滚,如果jenkins对话框选择Deploy就执行部署
if [ "${Status}" = "Deploy" ];then

### 判断是否为测试环境
    if [ "${deploy}" = "test" ];then
            ### 构建主机
               for i in ${test_host}
                 do
               ssh ${i} "mkdir -p ${war_bak}/${JOB_NAME}/${git}"
                 scp ${WAR_PATH} ${i}:${war_bak}/${JOB_NAME}/${git}/ROOT.war
                 ssh ${i} rm -rf ${tomcat_deploy}/*
                 ssh ${i} cp ${war_bak}/${JOB_NAME}/${git}/ROOT.war ${tomcat_deploy}
                 ssh ${i} systemctl restart  tomcat-${deploy}.service
          ### 判断tomcat是否正常      
                     for http in `seq 1 5`
                   do
                        tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`
                    if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then
                        echo -e "\033[5;34m 请稍等,服务启动中........ \033[0m"
                              sleep 15
                      else
                        echo -e "\033[5;34m 构建 ${i}环境发布正常,返回值[${tomcat_status}] \033[0m"
                              break
                      fi
                  done

                      if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then
                          if [[ "${tomcat_status}" = "" ]];then
                      echo -e "\033[5;34m 构建 ${i}服务启动异常 \033[0m"
                      exit 1
                          fi
                        echo -e "\033[5;34m 构建 ${i}环境发布异常,返回值[${tomcat_status}] \033[0m"
                    fi
              done
                echo -e "\033[5;34m 本次构建${test_host}主机,本次环境 ${deploy} \033[0m"
## 判断为预发布环境,如果jenkins对话框选择stag就执行预发布主机部署,这里没有配置默认不执行
    elif [ "${deploy}" = "stag" ];then
               for i in "${stag_host}"
                 do
               ssh ${i} mkdir -p ${war_bak}/${JOB_NAME}/${git}
                 scp ${WAR_PATH} ${i}:${war_bak}/${JOB_NAME}/${git}/ROOT.war
                 ssh ${i} rm -rf ${tomcat_deploy}/*
                 ssh ${i} cp ${war_bak}/${JOB_NAME}/${git}/ROOT.war ${tomcat_deploy}
                 ssh ${i} /etc/init.d/abcdocker-test restart
          ### 判断tomcat是否正常      
                     for http in `seq 1 5`
                   do
                        tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`
                    if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then
                        echo -e "\033[5;34m 请稍等,服务启动中........ \033[0m"
                              sleep 10
                      else
                        echo -e "\033[5;34m 构建 ${i}环境发布正常,返回值[${tomcat_status}] \033[0m"
                              break
                      fi
                  done

                      if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then
                          if [[ "${tomcat_status}" = "" ]];then
                      echo -e "\033[5;34m 构建 ${i}服务启动异常 \033[0m"
                      exit 1
                        fi
                        echo -e "\033[5;34m 构建 ${i}环境发布异常,返回值[${tomcat_status}] \033[0m"
                    fi
        done
               echo -e "\033[5;34m 本次构建${test_host}主机,本次环境 ${deploy} \033[0m"
   fi

### 回滚操作 使用RollBack填写commit md5 拉取对应时间版本的代码再次编译上线  完成回退
elif [[ "${Status}" = "RollBack" ]];then

  ### 判断回滚环境及主机
            if [ "${deploy}" = "test" ];then
              for i in ${test_host}
              do
                 ssh ${i}  "[ -d ${war_bak}/${JOB_NAME}/${git} ]"
                      if [ $? -ne '0' ];then
                            echo -e "\033[5;34m  git commit 回滚目录不存在,环境${deploy} 错误主机${i} \033[0m"
                            exit 3
                        else
                            echo -e "\033[5;34m  准备回滚操作  本次回滚环境${deploy} 回滚主机${i} \033[0m"
                            sleep 3
                      fi
                 ssh ${i}  "mkdir -p ${war_bak}/${JOB_NAME}/${git}_${Status}_rollback/"
                 ssh ${i}  "cp -r ${tomcat_deploy}/* ${war_bak}/${JOB_NAME}/${git}_${Status}_rollback/"
                 ssh ${i}  "rm -rf ${tomcat_deploy}/*"
                 ssh ${i} "cp -r ${war_bak}/${JOB_NAME}/${git}/*.war ${tomcat_deploy}/"
                 ssh ${i} /etc/init.d/abcdocker-test restart
                   ### 判断tomcat是否正常      
              for http in `seq 1 5`
              do
                 tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`
                 if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then
                        echo -e "\033[5;34m 请稍等,服务启动中........ \033[0m"
                        sleep 15
                 else
                        echo -e "\033[5;34m 构建 ${i}环境发布正常,返回值[${tomcat_status}] \033[0m"
                        break
                 fi
              done

                  if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then
                    if [[ "${tomcat_status}" = "" ]];then
                      echo -e "\033[5;34m 构建 ${i}服务启动异常 \033[0m"
                      exit 1
                    fi
                      echo -e "\033[5;34m 构建 ${i}环境发布异常,返回值[${tomcat_status}] \033[0m"
                 fi
              done

            elif [ "${deploy}" = "stag" ];then
              echo "123"
            ### 判断测试环境fi结束
            fi
fi
#### fi是判断是否有git地址的结束
fi
转载请注明-MrZ-个人博客
THE END
分享
二维码
海报
【CICD】java程序自动编译发布项目脚本
jenkins shell #!/bin/bash #tomcat服务器上发布java程序 #定义发布环境变量 war_bak="/data/tomcat/test/bak" tomcat_deploy="/data/tomcat-${deploy}/webapps" #WAR_PATH="${WORKSPACE……
<<上一篇
下一篇>>