Gitlab+Jenkins 实现代码发布脚本

#!/bin/bash
###########################################################
# Author:Liuyutang                                     ####
###########################################################
# Date:20180820                                        ####
###########################################################
# Project:Gitlab+Jenkins 自动化发布(批量上线及回滚)    ####
###########################################################
#----------------------------------------------------------

DEPLOY_METHOD=$1
GROUP_LIST=$2
if [[ ${GROUP_LIST} == "group1" ]];then
    PC_LIST="192.168.30.30"
elif [[ ${GROUP_LIST} == "group2" ]];then
    PC_LIST="192.168.30.40"
    ssh [email protected] ""echo enable server tomcat-web1/192.168.30.30"| socat stdio /var/lib/haproxy/haproxy.sock" 
    ssh [email protected] ""echo enable server tomcat-web2/192.168.30.30"| socat stdio /var/lib/haproxy/haproxy.sock" 
elif [[ ${GROUP_LIST} == "groupall" ]];then
    PC_LIST="192.168.30.30 192.168.30.40"
fi

download_file(){
  if [[ ${DEPLOY_METHOD} == "deploy" ]];then
    rm -rf myweb
    git clone [email protected]:root/myweb.git
    echo "静态资源下载完成!"
  elif [[ ${DEPLOY_METHOD} == "rollback_last_version" ]];then
    cd myweb && git reset --hard HEAD^ && cd ..
  fi
}

copy_file(){
  cd myweb
  for node in ${PC_LIST};do
    #git reset --hard HEAD^
    scp -r ./* ${node}:/data/tomcat/webapps/myweb
    echo "${node} 静态资源复制完成!"
  done
}

stop_tomcat(){
  for node in ${PC_LIST};do
    ssh -p22 www@${node} "/etc/init.d/tomcat stop"
    echo "${node} tomcat关闭成功"
  done
}

start_tomcat(){
  for node in ${PC_LIST};do
    ssh -p22 www@${node} "/etc/init.d/tomcat start"
    echo "${node} tomcat启动成功"
  done
}

add_server(){
  for node in ${PC_LIST};do
    if [[ ${node} == "192.168.30.30" ]];then
       echo "这是测试服务器,没有添加到负载"
    else
       ssh [email protected] ""echo enable server tomcat-web1/${node}"| socat stdio /var/lib/haproxy/haproxy.sock" 
       ssh [email protected] ""echo enable server tomcat-web2/${node}"| socat stdio /var/lib/haproxy/haproxy.sock" 
       echo "${node} 从负载添加成功"
    fi
  done
}

disable_server(){
  for node in ${PC_LIST};do
   ssh [email protected] ""echo disable server tomcat-web1/${node}"| socat stdio /var/lib/haproxy/haproxy.sock" 
   ssh [email protected] ""echo disable server tomcat-web2/${node}"| socat stdio /var/lib/haproxy/haproxy.sock" 
   echo "${node} 从负载关闭成功"
  done
}

test_url(){
  for node in ${PC_LIST};do
  NUM=`curl -I -m 10 -o /dev/null -s -w %{http_code} 192.168.30.30:8080/myweb/index.html`
  #curl --head http://192.168.30.30:8080/myweb/index.html
  if [ $NUM -eq 200 ];then
    echo "${node} index check OK!" 
  else
    echo "${node} index check ERROR!"
  fi
  done
}

scrip_help(){
  echo "help"
}

main(){
  case ${DEPLOY_METHOD} in
    deploy)
      disable_server
      download_file
      stop_tomcat
      copy_file
      start_tomcat 
      test_url
      add_server
      ;;

    rollback_last_version)
      download_file
      copy_file
      stop_tomcat
      start_tomcat
      test_url
      ;;
    
    *)
      script_help;
        script_help
    esac
}
main $1 $2 $3 $4

猜你喜欢

转载自blog.51cto.com/10461810/2298887