使用jenkins实现tomcat自动化部署

开始创建一个项目

1)点击新建任务

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

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

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

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

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

④添加完毕,选择svn账号

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

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

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

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

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

8)构建后的操作

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项目代码,编译过程会下载项目的相关依赖包,请耐心等待

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

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

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

jenkins无法重启tomcat的原因

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猛牛哥的博客

Hetzner独服通过proxmox开小鸡的步骤

4395
来自专栏Java成长之路

tomcat数据源配置

配置webRoot/WEB-INF/aurora.database/datasource.config文件:

3712
来自专栏云知识学习

FTP配置文件诠释

在/etc/vsftpd.conf(或在/etc/vsftpd/vsftpd.conf)配置文件中添加如下几项:

7178
来自专栏Petrichor的专栏

python: pyenv 指令备忘录

962
来自专栏电光石火

php环境无法上传文件的解决方法

一、 检查网站目录的权限。 上传目录是否有写入权限。 二、 php.ini配置文件 php.ini中影响上传的有以下几处: ...

2656
来自专栏happyJared

Java开发人员常用的服务配置(Nginx、Tomcat、JVM、Mysql、Redis)

4401
来自专栏linux运维学习

linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

限定某个目录禁止解析php 虚拟主机配置文件添加的核心配置内容: <Directory /data/wwwroot/111.com/upload> ...

2559
来自专栏游戏杂谈

rtx登录内网系统

公司内部使用rtx进行沟通和交流,经常遇到订餐的问题,用php写了一个订餐系统,实现rtx上点击链接打开系统就自动登录了,无需再次输入用户名和密码。

3611
来自专栏我是攻城师

关于Hbase多版本存储的一个注意点

49416
来自专栏从零开始学自动化测试

Selenium2+python自动化61-Chrome浏览器(chromedriver)

前言 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrome浏览器版本号,对应的驱动文件版本号又不一样,如果版本号不匹配,是没法启动...

3046

扫码关注云+社区

领取腾讯云代金券