文章目录

  • 引言
  • 一 jenkins配置部分
    • jenkins项目类型
    • General 配置
    • Source Code Management 配置
    • Build Triggers 配置
    • Build 配置
    • Post Steps 配置
    • (可选)构建设置、Post-build Actions
  • 二 linux启停脚本部分
    • stop.sh
    • replace.sh
    • startup.sh
  • 三 运行效果

引言

团队开发的过程中,需要有一个公共的环境用于测试、验证系统,使用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" ]
thenecho "kill -9 的pid:" $pidkill -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自动构建的一些截图:

  • 构建工程的概况

  • 单次构建的情况

  • 单次构建的日志

  • 钉钉群里构建失败时的通知

springboot程序在jenkins实现持续集成的例子相关推荐

  1. 【Jenkins】持续集成环境实战

    pdf供下载:https://download.csdn.net/download/hancoder/19835802 1.持续集成及Jenkins介绍 2.Jenkins安装和持续集成环境配置 3. ...

  2. [转]使用jenkins实现持续集成

    本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试 ...

  3. 【Jenkins】持续集成、持续交付与持续部署

    持续集成.持续交付与持续部署,都是软件开发过程中的很好的实践. 一.持续部署 装修厨房 全部装好之后发现灯不亮,电路有问题:冷热水装反了,管路有问题.这些问题要解决就必须把地砖.墙砖拆掉--一个环节有 ...

  4. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三

    在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...

  5. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二)

    在上文中我介绍了ASP.NET Core应用程序容器化时需要注意的几个问题,并给出了一个案例应用程序:tasklist.今天接着上文的内容,继续了解一下如何使用Azure DevOps进行ASP.NE ...

  6. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)

    上个月15日,上海MVP做了一次线下的技术分享活动,我分享的主题是<快速构建容器化的ASP.NET Core应用程序>,有关这次活动的简报,可以参考这里.另外,我的主题分享的PPT也可以点 ...

  7. Jenkins Docker 持续集成实践

    前言 持续集成(CI/CD)是一种软件开发实践.用于帮助团队成员频繁.快速的集成,测试他们的工作成果,以尽快发现集成错误. 更频繁.更早的集成意味着更早的发现问题.通过持续集成,及时发现和解决代码故障 ...

  8. 基于K8s和docker的Jenkins 可伸缩持续集成系统

    概述 本文档主要介绍Jenkins的可伸缩部署方式,一种是基于Docker(或者docker-swarm 集群)的部署方式,另外一种是基于kubernetes的部署方式. 由于基于kubernetes ...

  9. sss Jenkins+Github持续集成

    http://www.jianshu.com/p/b2ed4d23a3a9 Jenkins+Github持续集成 作者  吴彦欣  关注 2015.11.11 19:47  字数 994  阅读 51 ...

最新文章

  1. C++ 暂停Windows文件保护
  2. python去除中文停用词_删除停止词Python
  3. java动态json入库_从JSon File动态生成模式
  4. 前端工程师都会喜欢的5个JavaScript库
  5. 请编写一个c程序确定signed,unsigned的char,short,int和long变量取值范围
  6. IOC容器-Autofac在MVC中实现json方式注入使用
  7. LINUX安装QT的命令
  8. 易筋SpringBoot 2.1 | 第廿一篇:SpringBoot的Mybatis生成工具Generator
  9. 软件测试之软件测试方法
  10. javaweb超市仓库管理系统
  11. js实现实时的时间显示
  12. 做跨境如何去降低成本?
  13. redis-trib.rb命令详解
  14. 大规模海量并发难题的本质
  15. 浏览器的onload事件
  16. STC12系列单片机的1T模式和12T模式
  17. python算法与程序基础题库,计算机算法与程序设计(python)MOOC章节测试答案
  18. 51单片机 Proteus仿真 时钟 串口 发送时钟 整点报时
  19. centOS下tar: bzip2: Cannot exec: No such file or directo
  20. 好看又炫酷的网页特效例子收集

热门文章

  1. 互联网金融风控面试算法知识(四)
  2. 这10种项目管理方法,PMP项目经理备考收藏
  3. c 语言大整数阶乘,c++大数阶乘的实现方法
  4. Django day04 模型,模型中的CRUD
  5. jsp中显示日期格式设置
  6. vs打开别人cpp_网恋奔现遇到现实版乔碧萝,怀疑她拿了别人的照片……
  7. 双11女装数据大曝光!淘品牌大势已去
  8. 微信小程序开发--日历/日视图
  9. 计算机网页设计英语文献综述,计算机网络精品课程网站设计与实现文献综述
  10. Java开发新手入职第一天