电光石火电光石火

陌晴博客
ilkhome.cn

使用jenkins实现tomcat自动化部署

开始创建一个项目

1)点击新建任务

2)输入一个项目名称,选择 构建一个maven项目

TIM截图20180426162012.jpg

3)设置构建保存的天数和最大个数

TIM截图20180426162034.jpg

4)配置svn地址
①输入svn的项目地址
TIM截图20180426162216.jpg

②然后点击 Add 打开svn认证窗口

TIM截图20180426162305.jpg

③输入svn的账号和密码(必须有权限读取该项目地址)

TIM截图20180426162356.jpg

④添加完毕,选择svn账号

5)构建触发器使用默认设置

TIM截图20180426162503.jpg

6)编译选项使用 pom.xml 文件进行编译,并使用 clean package 进行打包

TIM截图20180426162515.jpg

7)Post Steps设置
①选择编译成功后执行脚本
TIM截图20180426162608.jpg

②输入以下内容执行shell命令

export BUILD_ID=dontKillMe
bash /ilkhome/scripts/auto_publish_2.sh target/*.war /ilkhome/www/tomcat2/webapps /ilkhome/www/tomcat2

TIM截图20180426162731.jpg

8)构建后的操作


TIM截图20180426162827.jpg

9)配置完毕后,点击 保存

8.脚本配置
1)脚本内容

#!/bin/bash
#
#############################################
# author:liukuan
# describes:自动化部署tomcat项目
#           请在jenkins项目下执行此脚本
# version:v1.0
# updated:20180423
#############################################
#
# 输出日志信息
log_file="/ilkhome/log/log_shell.log"
exec 1>>$log_file
# 需要部署的位于jenkins项目下的war包相对路径
program_path=$1
# war包名称
program_name=`basename $program_path`
# tomcat项目部署的路径
project_root_path=$2

# tomcat家目录
tomcat_home=$3
# 需要替换项目配置文件的源路径
configure_path=$4
# 备份路径
backup_path=/ilkhome/backup

echo "`date +'%Y-%m-%d %H:%M:%S'`:  $program_path"
echo "`date +'%Y-%m-%d %H:%M:%S'`:  $program_name"
echo "`date +'%Y-%m-%d %H:%M:%S'`:  $project_root_path"
echo "`date +'%Y-%m-%d %H:%M:%S'`:  $tomcat_home"
echo "`date +'%Y-%m-%d %H:%M:%S'`:  $configure_path"
echo "`date +'%Y-%m-%d %H:%M:%S'`:  $backup_path"

# 仅限指定用户运行本脚本
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=1
    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_root_path
    # 打包tomcat项目
    war_name=`date +%T`
    jar -cf ROOT$war_name.war ROOT
    mv ROOT$war_name.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"
        echo "----111"
    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"
        echo "--222"
    fi
}
 
# 备份项目并删除旧备份
if [ -d $project_root_path ];then
    Bacukup
    Del_backup
#   rm -rf $project_root_path/*
    rm -rf $project_root_path/ROOT/
fi
 
# 将war包拷贝至tomcat项目路径
if [ -e ${program_path} ];then
	mkdir $project_root_path/ROOT
    cp $program_path $project_root_path/ROOT/
fi
 
# 解压war包
if [ -d $project_root_path ];then
    cd $project_root_path/ROOT/
    jar -xf $program_name
fi
 
# 如果需要替换配置文件则先进行替换,再重启程序,否则直接重启程序
if [ -z $configure_path ];then
    rm -f $program_name
    Restart
else
    cp -r ${configure_path}/* $project_root_path/ROOT/
    rm -f $program_name
    Restart
fi


2)脚本参数说明:
必须填入3-4个位置参数
target/*.war:需要部署的位于jenkins项目下的war包相对路径(如/root/.jenkins/workspace/test)
/ilkhome/www/tomcat2/webapps:需要将生成的war包部署到tomcat指定的项目路径
/ilkhome/www/tomcat2:tomcat的家目录
/root/configure/test:可选,需要替换项目配置文件的源路径,需要注意的是源路径下的目录结构需要与tomcat项目的目录结构保持一致


9.构建项目
1)手动构建
①选择指定的项目,点击 立即构建,构建过程会同步svn项目代码,编译过程会下载项目的相关依赖包,请耐心等待

TIM截图20180426163221.jpg
②构建后,在构建历史会显示该次构建的ID和进度,点击圆球图标会进入到控制台输出窗口,显示详细的构建过程和结果

TIM截图20180426163257.jpg

③编译完成后,将会打包成war包,并调用指定的部署脚本(auto_publish.sh)进行部署和重启项目程序


2)自动构建
如果希望jenkins定时自动构建项目,可在Maven项目中配置构建触发器,在 Poll SCM 项中配置定时任务,如 H/30 * * * *,表示每30分钟定时检查版本库,如果发现有新的提交就触发构建
TIM截图20180426163400.jpg


jenkins无法重启tomcat的原因

方法:全局设置
打开:Hudson > 系统管理 > 系统设置
设置BUILD_ID 值为 allow_to_run_as_daemon
TIM截图20180426163535.jpg


本博客所有文章如无特别注明均为原创。作者:似水的流年
版权所有:《电光石火》 => 使用jenkins实现tomcat自动化部署
本文地址:http://ilkhome.cn/index.php/archives/328/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 使用jenkins实现tomcat自动化部署,谢谢。

评论