Jenkins + GitLab 借助定时检测 自动发版

0.png

Jenkins + GitLab 借助定时检测 自动发版

背景

本来想着用 GitLab的webhooks来进行通知Jenkins 进行自动发版的,但是由于Jenkins在局域网内,所以GitLab 不能给 Jenkins 通知。
无奈之下,只能让Jenkins定时检测 GitLab 有没有更新,实现进行自动发版操作。

环境

  1. Jenkins(局域网)
  2. GitLab(公网)

配置

  1. 安装Jenkins(安装方法略)
  2. 安装GitLab(安装方法略)
  3. 安装Jenkins 插件 Git plugin(安装方法略)
  4. 新建Jenkins Job (以NodeJs为例)
    • 构建一个自由风格软件项目
    • 源码管理中 选择 Git
      1.png
    • 构建触发器 选择 Pool SCM
      2.png
    • 构建 中添加自己需要执行 shell 脚本
      3.png

补充阅读

  1. Pull SCM 语法规则

    • 空行 和 以#开头的行,会被忽略为注释
    • 每行的格式: 分钟 小时 天 月份 星期 (以空格或 tab 分隔)
      • 分钟: 0–59
      • 小时: 0–23
      • 天数: 1–31
      • 月份: 1-12
      • 星期: 0-7 0和7代表星期天
    • H 的使用规则及说明:
      • 可防止重复执行. eg: 0 0 * * *会在12:00执行多次,而 H H * * *可以保证 12:00 任务只执行一次
      • 结合区间使用:H H(0-7) * * * 代表 0点到7:59分内,的一些时间点
      • H 代表某个区间内的随机值,本质上是 job 名称的 hash 值,而不是一个随机数函数。
      • 当设置天数为 H/3 时,会导致误差。*/3* 代表1-31, 而 H/3中的 H代表1-28
    • 示例:
      • H/15 * * * * 每15分钟
      • H(0-29)/10 * * * *每10分钟(仅限于 每小时内的前半个小时)
      • 45 9-16/2 * * 1-5 工作日内, 每天9:45~4:45之间, 之后每隔两小时 执行一次 job。执行时间必须为 x:45.
      • H H(9-16)/2 * * 1-5 工作日内, 每天的9:00~16:00之间, 每隔两小时执行一次。(有可能是: 10:38–>12:38…)
      • H H 1,15 1-11 * 每年1~11月内, 1号和15号两天内, 每天执行一次 job.
  2. 构建触发方式

    • 手动: 手动点击 Build 按钮触发
    • 触发远程构建 (例如,使用脚本)
    • Build after other projects are built
    • Build periodically
      • 周期进行项目构建(它不care源码是否发生变化)
    • GitHub hook trigger for GITScm polling
    • Poll SCM
      • 定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
  3. 如果想使用GitLab的webhook方式让Jenkins自动构建的话,阅读一下文章

    Gitlab利用Webhook实现Push代码后的jenkins自动构建

参考资料

Jenkins 构建触发设置

坚持原创技术分享,您的支持将鼓励我继续创作!