jenkins自动发启动测试启动是否成功的tomcat的脚本

Posted many-object

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins自动发启动测试启动是否成功的tomcat的脚本相关的知识,希望对你有一定的参考价值。

#!/bin/sh
#set -o errexit
#默认tomcat文件夹名称
tomcat_name=apache-tomcat-9.0.16

#默认检查页面
check_page=login.jsp

#默认检查页面
base_path=$(dirname $0)

#默认尝试10次
max_try=10

while getopts ":u:d:p:t:m:b:" opt
do
    case $opt in
    	#tomcat的启动端口
        u)
		startup_port=$OPTARG
        echo "启动端口的值:$OPTARG"
        ;;
        #tomcat的关闭端口
        d)
		shutdown_port=$OPTARG
        echo "关闭端口的值:$OPTARG"
        ;;
        #测试的访问页面
        p)
		check_page=$OPTARG
        echo "测试的页面为:$OPTARG"
        ;;
        #tomcat名称
        t)
		tomcat_name=$OPTARG
        echo "tomcat名称为:$OPTARG"
        ;;
        m)
		max_try=$OPTARG
        echo "base_path为:$OPTARG"
        ;;
        b)
		base_path=$OPTARG
        echo "base_path为:$OPTARG"
        ;;
        ?)
        echo "未知参数"
        ;;
    esac
done
if [[ "$startup_port" -eq "" ]] || [[ "$shutdown_port" -eq "" ]] ; then
	echo "必须要有startup_port:$startup_port 启动端口,shutdown_port:$shutdown_port 关闭端口参数"
	exit 1
	#statements
fi
#检查端口状态
check_port_status ()
	if [[ $1 ]]; then
		echo "**********$(date):查看的端口:$1*********"
		return $(expr length "$(netstat -lnp|grep $1)")
	else
		echo "端口不能为空"
		exit 1
	fi


#查看url的返回码
check_url_code () 
	if [[ $1 ]]; then
		echo "***********$(date):访问的url:$1**********"
		return $(curl -I -m 10 -o /dev/null -s -w %http_code  $1)
	else
		echo "url不能为空"
		exit 1
	fi


startup_status=1


while [[ startup_status -ne 0 ]] 
do
echo "*****************$(date):等待tomcat关闭*******************"
sleep 5
check_port_status $startup_port
startup_status=$?
#检测tomcat是否关闭
check_port_status $shutdown_port
shutdown_status=$?
if [[ shutdown_status -ne 0 ]]; then
		 echo “***************$(date)关闭tomcat****************” 
		 $base_path/$tomcat_name/bin/shutdown.sh
fi
done

echo "********************$(date):tomcat已是关闭状态***************"


echo "***************删除原有包********************"
rm -rf $base_path/$tomcat_name/webapps/*

echo "***************删除以前的日志********************"
rm -rf $base_path/$tomcat_name/logs/*

#移动现有包
echo "***************将包发布在tomcat********************"

cp $base_path/ROOT.war $base_path/$tomcat_name/webapps/

#启动命令
echo "***************启动tomcat********************"

$base_path/$tomcat_name/bin/startup.sh


echo "*************临时取消代理***************"
unset http_proxy
unset https_proxy
#判断是否启动成功

echo "*************等待启动完成***************"
code=000
trys=0
#先睡5miao不然tomcat还没有监听端口
sleep 5
check_port_status $startup_port
startup_status=$?

while [[ code -eq 000  ]] && [[ trys -lt max_try ]] && [[ startup_status -ne 0 ]]

do
	sleep 10s
	check_url_code http://localhost:$startup_port/$check_page
	code=$?
	trys=`expr $trys + 1`
	check_port_status $startup_port
	startup_status=$?
	echo "*************$(date):第 $trys 次访问 $check_page,返回码为:$code***************"
	
done

if [[ startup_status -ne 0 ]] ;then

	if [[ code -eq 200 ]]; then
		echo "***************$(date):tomcat启动成功,$check_page 访问成功,访问次数:$trys************"
		exit 0
	else 
		echo "***************$(date):tomcat启动成功,$check_page 访问失败,访问次数:$trys************"
		exit 500
	fi
else
	echo "***************$(date):tomcat启动失败,请查看启动日志************"
	exit 500
fi

  该脚本实现了自动发布包、清日志、关闭、启动tomcat、并且会判断tomcat是否启动成功、页面是否可以访问

以上是关于jenkins自动发启动测试启动是否成功的tomcat的脚本的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins|简单Job配置|启动脚本|测试报告

jenkins环境搭建

我可以使用 Jenkins 来测试 VM(服务器)是不是已启动并正在运行?

解决jenkins邮件发送不出去

iOS使用Jenkins自动打包发布测试

通过Jenkins自动构建dubbo服务时的问题汇总