@
目录引言
团队开发的过程中,需要有一个公共的环境用于测试、验证系统,使用jenkins可以定期自动更新代码、编译代码、运行程序。下面给出一个我们自己团队在用的一套脚本,大家自行参考,也希望大家能提出宝贵的意见。
一 jenkins配置部分
jenkins项目类型
springboot一般使用maven进行构建,jenkins选择“构建一个maven项目”
General 配置
建议把“Discard old builds”选上,避免把服务器的磁盘空间撑爆。
Source Code Management 配置
Build Triggers 配置
建议使用【Build periodically】和【Poll SCM】结合,使用cron去设定定时任务。
Build periodically:不管是否有源代码有更新,按照周期定期编译
Poll SCM:周期去检查代码是否更新,有更新就触发编译
H 12 * * 1 #Build periodically
H/5 * * * * #Poll SCM
Build 配置
这块比较简单,就是指定pom文件和maven的命令,使用clean package命令,将代码打成jar包。
clean package
Post Steps 配置
一般选择【Run only if build succeeds】,在打包成功后,执行一段脚本命令,实现jar包的覆盖,jar程序的启停。大家请根据自己的代码的存放路径,进行修改。
/var/lib/jenkins/workspace/mis 这个文件夹是代码根目录,/var/lib/jenkins/workspace/mis/bin是脚本存放的地方,我把脚放跟代码放到一起,方便对脚本进行微调。stop.sh、replace.sh、startup.sh的脚本代码文章下面会给出。
#!/bin/bash
cd /var/lib/jenkins/workspace/mis/bin
chmod +x stop.sh
chmod +x replace.sh
chmod +x startup.sh
./stop.sh
./replace.sh
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup /var/lib/jenkins/workspace/mis/bin/startup.sh &
(可选)构建设置、Post-build Actions
构建成功后,需要通知相关人员,可以使用构建设置->E-mail Notification
实现,我这里使用Post-build Actions->钉钉通知器配置
实现使用钉钉群机器人在群里发通知。钉钉通知器配置需要安装DingTalk这个插件,DingTalk刚升级到2的时候出现了兼容性问题,功能失效,所以我一直停留在1.9这个版本。如果大家有问题,建议安装1.9版本。
填入【jenkins URL】和【钉钉access token
】(钉钉access token填写钉钉机器人产生URL中的accessToken, 请注意不要填写完整的URL)
jenkins配置部分到此结束。
二 linux启停脚本部分
这里给出我们springboot项目的一个结构,主要就是多加了一个脚本文件夹,里面有3个脚本:
- stop.sh 把先前的进程kill掉
- replace.sh 替换jar包
- startup.sh 启动springboot程序
ps:我们公共服务器是linux,windows版本的脚本大家可以参考着自行编写,如果需求量大,回头我写一个共享给大家。
stop.sh
mis-1.0-SNAPSHOT.jar为你生成的jar包名称,自行替换下
echo "Stopping mis-1.0-SNAPSHOT.jar"
pid=`ps -ef | grep mis-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "kill -9 的pid:" $pid
kill -9 $pid
fi
replace.sh
为了在编译的过程中,不影响程序运行,所以把执行文件放到了另外一个文件夹。
cp /var/lib/jenkins/workspace/mis/target/mis-1.0-SNAPSHOT.jar /var/lib/jenkins/workspace/mis/
startup.sh
【mis-1.0-SNAPSHOT.jar】为生成的jar包,请自行替换名称。
cd /var/lib/jenkins/workspace/mis/
./mis-1.0-SNAPSHOT.jar > ./log/catlina.out 2>&1
要注意的是,这里生成的【mis-1.0-SNAPSHOT.jar】可以直接执行,需要在pom文件进行相应的配置。
到此全部配置完成!!!
三 运行效果
下面是jenkins自动构建的一些截图:
-
构建工程的概况
-
单次构建的情况
-
单次构建的日志
-
钉钉群里构建失败时的通知