写点什么

🏆(不要错过!)【CI/CD 技术专题】「Jenkins 实战系列」(2)Jenkins 实现自动化部署 + 自动化合并其他分支

发布于: 17 小时前
🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(2)Jenkins实现自动化部署+自动化合并其他分支

前提概要

前面的文章中介绍过了,针对于 Jenkins 的 Window 环境的安装以及部署到 Linux 环境的案例和基本配置,🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(1)全流程介绍Jenkins环境搭建+基础部署配置(Windows->Linux),接下来,会针对于相关的 Jenkins 的重中之重的功能,自动化部署进行相关介绍,还包含了自动拉去分支等功能!

技术资源推荐

jenkins官方文档(中文版)


jenkins官方网站

自动定时构建

定时构建语法:

* * * * *
复制代码


  • 第一个 * 表示分钟,取值 0~59,若其他值不做设定,则表示每个设定的分钟都会构建

  • 第二个 * 表示小时,取值 0~23, 若其他值不做设定,则表示每个设定小时的每分钟都会构建

  • 第三个 * 表示一个月的第几天,取值 1~31,若其他值不做设定,则表示每个月的那一天每分钟都会构建一次

  • 第四个 * 表示第几月,取值 1~12,若其他值不做设定,则表示每年的那个月每分钟都会构建一次

  • 第五个 * 表示一周中的第几天,取值 0~7,其中 0 和 7 代表的都是周日,若其他值不做设定,则表示每周的那一天几每分钟都会构建一次

常用定时构建举例:

  • 由于项目的代码一般存在放 SVN/GIT 中,而一个 SVN/GIT 往往是有多个项目组在提交代码,而每个项目组又有多人组成,其中每个人也都在对自己的那块代码不停地在进行维护

  • 所以说对于一个公司而言,SVN/GIT 的提交记录往往是很频繁的,正因为如此,Jenkins 在执行自动化构建时往往是以天为单位来执行的,下面举的例子就是在一天中常用的定时构建示例

每隔 5 分钟构建一次

H/5 * * * *

每两小时构建一次

H H/2 * * *

每天中午下班前定时构建一次

0 12 * * *

每天下午下班前定时构建一次

0 18 * * *

定时构建位置

在“配置”->“构建触发器”中,如下图所示



Build after other projects are built:在其他项目触发的时候触发,里面有分为三种情况,也就是其他项目构建成功、失败、或者不稳定的时候触发项目;

Poll SCM 和 Build periodically 来进行定时自动构建项目

  • Poll SCM:定时检查源码变更(根据 SCM 软件的版本号),如果有更新就 checkout 最新 code 下来,然后执行构建动作。如下图配置


在 构建触发器 中选择“Poll SCM”


Build periodically
Poll SCM


输入框为 分,时,日,月,星期, 号代表不限制,我设置的是每天早 8 点自动部署*。



  • / 5 * * * * (每 5 分钟检查一次源码变化


  • Build periodically:周期进行项目构建(它不关心源码是否发生变化),如下图配置


H 2 * * * (每天 2:00 必须 build 一次源码)

在 Schedule 中填写

0 * * * *


  • 第一个参数代表的是分钟 minute,取值 0~59;

  • 第二个参数代表的是小时 hour,取值 0~23;

  • 第三个参数代表的是天 day,取值 1~31;

  • 第四个参数代表的是月 month,取值 1~12;

  • 最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。


所以 0 * * * * 表示的就是每个小时的第 0 分钟执行构建。

最后补充几个案例

  • 在每个小时的前半个小时内的每 10 分钟


H(0-29)/10 * * * *


  • 每两小时 45 分钟,从上午 9:45 开始,每天下午 3:45 结束


45 9-16/2 * * 1-5


  • 每两小时一次,每个工作日上午 9 点到下午 5 点(也许是上午 10:38,下午 12:38,下午 2:38,下午 4:38)


H H(9-16)/2 * * 1-5


  • 每月(除了 12 月)从 1 号到 15 号这段时间内某刻


H H 1,15 1-11 *


  • 每周四,19 点 30 分


30 19 * * 4


  • 每天早晨 8 点


0 8 * * *


  • 每周六日的 8 点 12 点 18 点构建


H 8,12,18 * * 6,7


  • 每周 1 到周 5,8 点到 23 点,每小时构建一次


H 8-23 * * 1-5


  • 每周 1 到周 5,8 点到 23 点,每两小时构建一次


H 8-23/2 * * 1-5


  • 每周 1 到周 5,8 点到 23 点,每 30 分钟构建一次


H/30 8-23 * * 1-5

Jenkins 自动合并分支

通过 jenkins 发布项目时,可能需要合并分支,如:发布测试环境的时候需要把 dev 分支合并到 test 分支,此时就可以用 jenkins 自动实现。




配置构建的参数


  • Source files 项目构建后的目录

  • Remove prefix 去前缀

  • Remote directoty 发布的目录

  • Exec command 发布完执行的命令,我这边写的是发布完会重启 tomcat


#! /bin/bashtomcat_home=/usr/local/tomcat-8SHUTDOWN=$tomcat_home/bin/shutdown.shSTARTTOMCAT=$tomcat_home/bin/startup.shecho "关闭$tomcat_home"$SHUTDOWN#杀死tomcat进程
ps -ef | grep $path | grep java | awk '{print $2}' | xargs kill -9
#删除日志文件,如果你不先删除可以不要下面一行rm $tomcat_home/logs/* -rf#删除tomcat的临时目录rm $tomcat_home/work/* -rfsleep 5echo "启动$tomcat_home"$STARTTOMCAT#看启动日志#tail -f $tomcat_home/logs/catalina.out
复制代码


发布于: 17 小时前阅读数: 5
用户头像

我们始于迷惘,终于更高水平的迷惘。 2020.03.25 加入

🏆 【酷爱计算机技术、醉心开发编程、喜爱健身运动、热衷悬疑推理的”极客狂人“】 🏅 【Java技术领域,MySQL技术领域,APM全链路追踪技术及微服务、分布式方向的技术体系等】 🤝未来我们希望可以共同进步🤝

评论

发布
暂无评论
🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(2)Jenkins实现自动化部署+自动化合并其他分支