开始创建一个项目
1)点击新建任务
2)输入一个项目名称,选择 构建一个maven项目
3)设置构建保存的天数和最大个数
4)配置svn地址
①输入svn的项目地址
②然后点击 Add 打开svn认证窗口
③输入svn的账号和密码(必须有权限读取该项目地址)
④添加完毕,选择svn账号
5)构建触发器使用默认设置
6)编译选项使用 pom.xml 文件进行编译,并使用 clean package 进行打包
②输入以下内容执行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