作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
写在前面
趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪。有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家。这不,就有小伙伴问我:如何通过Jenkins自动构建和发布项目,我:安排上了!!
小伙伴的疑问
我们还是通过一张图来直观的了解下小伙伴的疑问吧。
老规则,我们直接进入正题。
基础环境
所有的环境均搭建在CentOS 6.5 x64服务器上,IP:192.168.209.121 主机名:liuyazhuang121 , 并在服务器上配置了主机名到IP的映射。
构建Web项目
环境配置
首先,我们来看下如何通过Jenkins自动构建发布Web项目到远程Tomcat。我们使用的环境是:Jdk1.8 Maven3.6.3 Tomcat9.0 Jenkins2.19.3 SSH Shell
其中,JDK、Maven和Tomcat小伙伴们可以自行下载安装并配置系统环境,可以到链接http://download.csdn.net/download/l1028386804/10127368 下载jenkins2.19.3。
配置SSH免密码登录
代码语言:javascript复制ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys/
配置Jenkins
启动Jenkins
下载的Jenkins war包拷贝到${TOMCAT_HOME}/webapp目录下,并启动Tomcat,在浏览器中输入http://192.168.209.121:8080/jenkins,如下图所示,则证明Jenkins启动成功。
安装插件
上述默认安装的插件还不够
依次点击 系统管理->插件管理-> 可选插件-> 过滤搜索框中 查找如下插件:
- Maven Integration plugin
- SSH plugin
- Deploy to container Plugin
设置系统管理-Global Tool Configuration
在系统管理-Global Tool Configuration中配置JDK和Maven,如下:
配置系统管理-Configure Global Security
注册并登录用户
配置SSH remote hosts
在系统管理-系统设置,配置SSH remote hosts
点击Add按钮设置登录方式,如下图所示:
点击Check connection按钮 ,如果页面上输出Successfull connection,则SSH配置成功,如下图所示:
新建项目构建
配置项目构建
General-配置项目名称
源码管理-配置SVN信息
配置Pre Steps
配置Post Steps
配置完成后保存。
构建项目
回到主页,点击立即构建项目按钮,如下图:
可看到页面上出现对maven_test的构建进度条,点击进度条即可进入日志输出页面,如下图:
输出如下日志,则代表构建并部署到tomcat成功。
tomcat.sh脚本
最后,我们给出tomcat.sh脚本的内容,如下所示。
代码语言:javascript复制#!/bin/sh
## java env
## service name
SERVICE_NAME=tomcat_service
case "$1" in
start)
/usr/local/tomcat/test-tomcat-10000/bin/startup.sh
;;
stop)
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "test-tomcat-10000" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0
构建Java项目
Jenkins构建Jar包发布到远程服务器和构建War包发布到远程服务器配置基本一致,只是Post Steps配置稍有不同。
配置Post Steps
配置Jar包发布到远程服务器的Post Steps配置如下:
构建项目
account-server.sh脚本
最后,我们也给出account-server.sh脚本的内容,如下所示。
代码语言:javascript复制#!/bin/sh
## java env
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
## service name
APP_NAME=account
SERVICE_DIR=/usr/local/dubbo-server/$APP_NAME
SERVICE_NAME=medcare-dubbo-$APP_NAME
JAR_NAME=$SERVICE_NAME.jar
PID=$SERVICE_NAME.pid
cd $SERVICE_DIR
case "$1" in
start)
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;;
stop)
kill `cat $SERVICE_DIR/$PID`
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME"
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0