yanfei 发表于 2018-9-4 06:40:58

使用jenkins实现tomcat自动化部署

# cat /usr/local/scripts/auto_publish.sh  
#!/bin/bash
  
#
  
#############################################
  
# author:Ellen
  
# describes:自动化部署tomcat项目
  
#         请在jenkins项目下执行此脚本
  
# version:v1.0
  
# updated:20170606
  
#############################################
  
#
  
# 需要部署的位于jenkins项目下的war包相对路径
  
program_path=$1
  
# war包名称
  
program_name=`basename $program_path`
  
# tomcat项目部署的路径
  
project_path=$2
  
project_root_path=$project_root_path
  
# tomcat家目录
  
tomcat_home=$3
  
# 需要替换项目配置文件的源路径
  
configure_path=$4
  
# 备份路径
  
backup_path=/data/backup
  

  
# 仅限指定用户运行本脚本
  
if [ $EUID != "0" ];then
  
    echo "Please use root run script!!!"
  
    exit 1
  
fi
  

  
#限制位置参数个数
  
if [ $# -lt 3 -o $# -gt 4 ];then
  
    echo "请输入3个或者4个需要传入脚本的位置参数,并以空格隔开。"
  
    echo "分别为:需要部署的位于jenkins项目下的war包相对路径 tomcat项目部署的路径 tomcat家目录 需要替换项目配置文件的源路径[可选]"
  
    exit 1
  
fi
  

  
# 删除旧备份
  
Del_backup()
  
{
  
    # 保留备份文件天数
  
    save_days=7
  
    if [ -d $backup_path ];then
  
      find $backup_path -mtime +$save_days -exec rm -rf {} \;
  
    fi
  
}
  

  
# 备份tomcat项目
  
Bacukup()
  
{
  
    # 备份后的路径
  
    backup_dir=${backup_path}/`date +%Y%m%d`
  
    if [ ! -d $backup_dir ];then
  
      mkdir -p $backup_dir
  
    fi
  
    cd $project_path
  
    # 打包tomcat项目
  
    jar -cf ROOT.war ROOT
  
    mv ROOT.war $backup_dir
  
    cd -
  
}
  

  
# 重启程序
  
Restart()
  
{
  
    num1=`ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"|wc -l`
  
    if [ $num1 -ne 0 ];then
  
      bash ${tomcat_home}/bin/shutdown.sh &> /dev/null
  
    fi
  
    sleep 5
  
    num2=`ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"|wc -l`
  
    if [ $num2 -eq 0 ];then
  
      bash ${tomcat_home}/bin/startup.sh &> /dev/null
  
      ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"
  
    else
  
      pid=`ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"|awk {'print $2'}`
  
      kill $pid
  
      sleep 5
  
      bash ${tomcat_home}/bin/startup.sh &> /dev/null
  
      ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"
  
    fi
  
}
  

  
# 备份项目并删除旧备份
  
if [ -d $project_root_path ];then
  
    Bacukup
  
    Del_backup
  
    rm -rf $project_root_path/*
  
fi
  

  
将war包拷贝至tomcat项目路径
  
if [ -e ${program_path} ];then
  
    cp $program_path $project_root_path/
  
fi
  

  
# 解压war包
  
if [ -d $project_root_path ];then
  
    cd $project_root_path
  
    jar -xf $program_name
  
fi
  

  
# 如果需要替换配置文件则先进行替换,再重启程序,否则直接重启程序
  
if [ -z $configure_path ];then
  
    rm -f $program_name
  
    Restart
  
else
  
    cp -r ${configure_path}/* $project_root_path/
  
    rm -f $program_name
  
    Restart
  
fi
  
#


页: [1]
查看完整版本: 使用jenkins实现tomcat自动化部署