专栏首页电光石火使用jenkins实现tomcat自动化部署

使用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 条评论
登录 后参与评论

相关文章

  • 使用jenkins实现tomcat自动化部署

    似水的流年
  • Eclipse安装SVN插件

    SVN插件下载地址及更新地址,你根据需要选择你需要的版本。现在最新是1.8.x Links for 1.8.x Release: Eclipse u...

    似水的流年
  • Eclipse安装SVN插件

    SVN插件下载地址及更新地址,你根据需要选择你需要的版本。现在最新是1.8.x Links for 1.8.x Release: Eclipse update ...

    似水的流年
  • 使用jenkins实现tomcat自动化部署

    似水的流年
  • C语言与汇编的嵌入式编程:求100以内素数

     由于C语言中使用的是for进行循环,使用VC调试汇编时,发现for汇编的jmp需要具体地址才可以进行,对于程序来讲不方便

    墨文
  • DDR3和mig的介绍

    FPGA开源工作室将通过五篇文章来给大家讲解xilinx FPGA 使用mig IP对DDR3的读写控制,旨在让大家更快的学习和应用DDR3。

    FPGA开源工作室
  • WebView的使用及实战

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

    用户2965908
  • Hadoop伪分布式集群搭建

    CoderJed
  • 分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口

    一、Zabbix-3.0.3批量添加主机的配置如下: 0)被监控机上要安装zabbix_agent,并配置好zabbix_agentd.conf (如下172....

    洗尽了浮华
  • 【Spring】Spring MVC原理及配置详解

    Java学习123

扫码关注云+社区

领取腾讯云代金券