springboot程序在jenkins实现持续集成的例子

@

目录

引言

团队开发的过程中,需要有一个公共的环境用于测试、验证系统,使用jenkins可以定期自动更新代码、编译代码、运行程序。下面给出一个我们自己团队在用的一套脚本,大家自行参考,也希望大家能提出宝贵的意见。

一 jenkins配置部分

jenkins项目类型

springboot一般使用maven进行构建,jenkins选择“构建一个maven项目”
springboot程序在jenkins实现持续集成的例子

General 配置

建议把“Discard old builds”选上,避免把服务器的磁盘空间撑爆。
springboot程序在jenkins实现持续集成的例子

Source Code Management 配置

springboot程序在jenkins实现持续集成的例子

Build Triggers 配置

建议使用【Build periodically】和【Poll SCM】结合,使用cron去设定定时任务。
Build periodically:不管是否有源代码有更新,按照周期定期编译
Poll SCM:周期去检查代码是否更新,有更新就触发编译

H 12 * * 1   #Build periodically
H/5 * * * *  #Poll SCM

springboot程序在jenkins实现持续集成的例子

Build 配置

这块比较简单,就是指定pom文件和maven的命令,使用clean package命令,将代码打成jar包。

clean package

springboot程序在jenkins实现持续集成的例子

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 &

springboot程序在jenkins实现持续集成的例子

(可选)构建设置、Post-build Actions

构建成功后,需要通知相关人员,可以使用构建设置->E-mail Notification实现,我这里使用Post-build Actions->钉钉通知器配置实现使用钉钉群机器人在群里发通知。钉钉通知器配置需要安装DingTalk这个插件,DingTalk刚升级到2的时候出现了兼容性问题,功能失效,所以我一直停留在1.9这个版本。如果大家有问题,建议安装1.9版本。

springboot程序在jenkins实现持续集成的例子
填入【jenkins URL】和【钉钉access token
】(钉钉access token填写钉钉机器人产生URL中的accessToken, 请注意不要填写完整的URL)
springboot程序在jenkins实现持续集成的例子
jenkins配置部分到此结束。

二 linux启停脚本部分

这里给出我们springboot项目的一个结构,主要就是多加了一个脚本文件夹,里面有3个脚本:

  • stop.sh 把先前的进程kill掉
  • replace.sh 替换jar包
  • startup.sh 启动springboot程序

ps:我们公共服务器是linux,windows版本的脚本大家可以参考着自行编写,如果需求量大,回头我写一个共享给大家。

springboot程序在jenkins实现持续集成的例子

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文件进行相应的配置。
springboot程序在jenkins实现持续集成的例子
到此全部配置完成!!!

三 运行效果

下面是jenkins自动构建的一些截图:

  • 构建工程的概况
    springboot程序在jenkins实现持续集成的例子

  • 单次构建的情况
    springboot程序在jenkins实现持续集成的例子

  • 单次构建的日志
    springboot程序在jenkins实现持续集成的例子

  • 钉钉群里构建失败时的通知
    springboot程序在jenkins实现持续集成的例子

上一篇:jenkins 管理员账号出现 Access Denied 问题的解决办法


下一篇:Python学习(5)-------循环