开始创建一个项目
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)脚本内容
代码语言: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项目代码,编译过程会下载项目的相关依赖包,请耐心等待
②构建后,在构建历史会显示该次构建的ID和进度,点击圆球图标会进入到控制台输出窗口,显示详细的构建过程和结果
③编译完成后,将会打包成war包,并调用指定的部署脚本(auto_publish.sh)进行部署和重启项目程序
2)自动构建 如果希望jenkins定时自动构建项目,可在Maven项目中配置构建触发器,在 Poll SCM 项中配置定时任务,如 H/30 * * * *,表示每30分钟定时检查版本库,如果发现有新的提交就触发构建
jenkins无法重启tomcat的原因
方法:全局设置 打开:Hudson > 系统管理 > 系统设置 设置BUILD_ID 值为 allow_to_run_as_daemon