软件环境:jenkins+git+gitlab+tomcat
jenkins页面如下:
java服务在远程服务器是以www普通用户来运行的
2,jenkins General配置如下:
配置钉钉机器人,和构建保留天数个性化定制
3, jenkins构建参数定义
4.jenkins构建环境,这个需你下载Password Parameters插件才有的,因为我远程是用www用户发布的,这个的www还有密码就是远端服务器远程账号和密码
5.jenkins构建Execute shell
构建步骤全靠这里面的脚本内容来执行
脚本内容
#########################################################################################################
##新建jenkins任务的时候,修改下面自定义参数即可
######主机定义#############################
host1()
{
##普通用户登录远程发布服务器#################
host=www@10.0.0.81
##普通用户密码,使用jenkins 加密了密码Mask passwords and regexes (and enable global passwords)
password=$www
##远程服务器的ssh端口号
port=59878
######远程主机项目目录######################
redeploypath=
/usr/local/tomcat/webapps
}
################获取编译包###########
build()
{
#####打印当前代码分支##############
echo
"当前代码分支 $project "
#####打印当前jenkins工作空间目录###
echo
"当前工作空间目录 $WORKSPACE "
cd $WORKSPACE
[ -d ${WORKSPACE}/${project} ] &&
rm -rf ${WORKSPACE}/${project}
#####git clone代码#########
git clone http://linghuchong:xxxxxx@gitlab.10heroes.cn/slsk/${project}.git
if [[ "${project}" == "slsk-gm" ]];then
war_file="GameManager.war"
war_dir="GameManager"
elif [[ "${project}" = "slsk-portal" ]];then
war_file="entertain.war"
war_dir="entertain"
fi
#####查看初次打包结果##############
/usr/bin/ls -lh $WORKSPACE/${project}/${ENV}/${war_file}
#####打包目录######################
war=$WORKSPACE/${project}/${ENV}/${war_file}
}
#####发布######
publish()
{
######判断下远程主机目录是否存在,不存在即创建###################
sshpass -p $password ssh
-p $port -o StrictHostKeyChecking=no $host
"if [ ! -d "
$redeploypath
" ]; then mkdir $redeploypath; fi"
#########发布前关闭##################################
sshpass -p $password
ssh
-p $port -o StrictHostKeyChecking=no $host
"sh /usr/local/tomcat/bin/shutdown.sh"
######重新发布项目时,会清空一下远程主机项目目录
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "if [ -d "${redeploypath}/ROOT" ];then rm -rf ${redeploypath}/ROOT && rm -f ${redeploypath}/ROOT.war;fi"
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "if [ -d "${redeploypath}/${war_dir}" ];then rm -rf ${redeploypath}/${war_dir};fi"
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "if [ -f "${redeploypath}/${war_file}" ];then rm -f ${redeploypath}/${war_file};fi"
######将要运行的GameManager.war包传到远程主机目录###########################
sshpass -p $password /usr/bin/scp -P $port -o StrictHostKeyChecking=no -r -p $war $host:$redeploypath
######执行远程主机脚本启动项目##################################
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "sh /usr/local/tomcat/bin/startup.sh"
######查看远程主机启动的jar#####################################
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "ps -ef|grep "tomcat"|grep -v grep"
}
##服务关闭脚本############
stopserver()
{
######远程执行脚本关闭服务#####################################
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "sh /usr/local/tomcat/bin/shutdown.sh"
}
####重启服务#############
restartserver()
{
######远程执行脚本停止服务,然后重启服务#########################
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "sh /usr/local/tomcat/bin/shutdown.sh; sh /usr/local/tomcat/bin/startup.sh"
}
####固定查看1000行日志
logprinting()
{
######查看远程主机1000行日志############################
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "cd /usr/local/tomcat/logs/; tail -fn 1000 catalina.out"
}
####滚动查看服务日志########
logscrolling()
{
######动态120秒查看远程主机1000行日志############################
sshpass -p $password ssh -p $port -o StrictHostKeyChecking=no $host "cd /usr/local/tomcat/logs/; timeout 120 tail -fn 1000 catalina.out "
}
case
"$Status"
in
Deploy)
echo
"Status:$Status"
host1
build
publish
;;
Stop)
echo
"Status:$Status"
host1
stopserver
;;
Restart)
echo
"Status:$Status"
host1
restartserver
;;
Logprinting)
echo
"Status:$Status"
host1
logprinting
;;
Logscrolling)
echo
"Status:$Status"
host1
logscrolling
;;
*)
echo
"warnning -- usage $0 Deploy | Stop | Restart | Logprinting | Logscrolling "
;;
esac