前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用jenkins实现tomcat自动化部署

使用jenkins实现tomcat自动化部署

作者头像
似水的流年
发布2018-05-28 17:40:02
2.1K0
发布2018-05-28 17:40:02
举报
文章被收录于专栏:电光石火电光石火

开始创建一个项目

1)点击新建任务

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

TIM截图20180426162012.jpg
TIM截图20180426162012.jpg

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

TIM截图20180426162034.jpg
TIM截图20180426162034.jpg

4)配置svn地址 ①输入svn的项目地址

TIM截图20180426162216.jpg
TIM截图20180426162216.jpg

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

TIM截图20180426162305.jpg
TIM截图20180426162305.jpg

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

TIM截图20180426162356.jpg
TIM截图20180426162356.jpg

④添加完毕,选择svn账号

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

TIM截图20180426162503.jpg
TIM截图20180426162503.jpg

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

TIM截图20180426162515.jpg
TIM截图20180426162515.jpg

7)Post Steps设置 ①选择编译成功后执行脚本

TIM截图20180426162608.jpg
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
TIM截图20180426162731.jpg

8)构建后的操作

TIM截图20180426162827.jpg
TIM截图20180426162827.jpg

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

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

代码语言:javascript
复制
#!/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
TIM截图20180426163221.jpg

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

TIM截图20180426163257.jpg
TIM截图20180426163257.jpg

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

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

TIM截图20180426163400.jpg
TIM截图20180426163400.jpg

jenkins无法重启tomcat的原因

方法:全局设置 打开:Hudson > 系统管理 > 系统设置 设置BUILD_ID 值为 allow_to_run_as_daemon

TIM截图20180426163535.jpg
TIM截图20180426163535.jpg
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-4-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档