关于 jenkins、sql、redis、git等工具的一体化全自动发布

原创
2024/09/23 10:46
阅读数 127

简介

在之前确认发布时间及内容后,需要运维同学在指定时间手动去多个工具之间执行构建动作;繁琐、忙碌、易出错。

使用 cronin 工具的'流水线'功能可以解决多工具的统一调度问题,从而实现 jenkins、sql、redis、git 等工具的一体化自动发布。

案例

事件描述

当开发小组完成了xx功能并通过了测试验证后,定于 9.24号22点进行项目发布,评估发布清单如下:

事项 内容 pr链接
发布时间 2024-09-24 22:00
发布版本 release/v3.2.26.0
执行SQL 2024/sm0901/mn.sql
projectB部署 s1、s2、s3 https://gitee.com/mnyuan/projectB/pulls/1201 (样例)
projectC部署 https://gitee.com/mnyuan/projectC/pulls/2760 (样例)
菜单脚本 /menu/run.sh 2024/sm0901/menu* 2024/sm0901/group* prod

补充说明:

  • sql 内容统一放于 git 项目 projectA 中,并根据开发人员命名。
  • projectB 项目为 go 语言开发,并使用微服务模式;清单描述中 s1~s3为需要发布的服务。
  • projectC 项目为早期 php 开发项目。
  • 菜单脚本 包含了sql、redis、等复杂操作,采用sh封装,通过 linux bash 命令行触发执行。

任务设置

进入:头部导航 / 流水线 / 添加流水线

新增流水线任务

选择执行的任务组件

完善任务信息:名称、执行时间、当前参数、执行的任务组件。

任务设置好后可激活状态即在指定时间自动执行;为了增加安全性,建议指定负责人进行审核。

当任务开始、结束、或错误时都将会发送消息给指定人员。

补充说明

  • sql执行、pr合并、tag更新、菜单脚本都使用了动态参数(提高任务组件的复用),流水线需要实现对应的参数。
  • sql 语句存放于项目 A,指定文件路径即可拉取执行,自动解析多行 sql。
  • 项目 B 发版时需要:pr合并、tag更新、jenkins 主备构建。
  • 项目 C 为 php 程序,pr合并会自动触发 jenkins 构建。
  • 菜单脚本 具体参数存放于项目 A,输入路径即可拉取执行。

建议流程

前期准备 由运维或服务器负责同事,完成基础任务的设置。

任务设置 开发小组负责人在迭代上线前创建流水线,选择任务组件,并交由运维同事进行审核。

任务执行时 测试人员、开发人员 需要在发布时密切关注告警消息,以应对突发情况。发布完成后,测试人员即可跟进正式环境的验证。

结语

上面的案例中包含了 sql执行、pr合并、tag文件更新、jenkins构建、命令行执行等,我们的日常开发中可能还会包含更多的工具维度,都是可以包含在整个流水线中的。

原来我们需要依次打开各个工具并执行对应的操作,过程中需要小心翼翼避免出错。现在直接解放了运维同事,由开发人员自己设置任务。拒绝熬夜。

如果构建服务器资源不足无法并行构建,就需要等上一次构建完成后,再手动点击新的构建,繁琐且无形拉长了发布周期。通过任务设置将复杂度封装在内部,开发同事只需选择对应任务组件自动执行,并在事前交叉核查,简单同时又减少了风险。

原来较大版本发布时,可能超过一小时,过程中除了发布执行同事忙了外,其他同事无法感知进度时常催促询问(紧张同时又增加烦躁)。现在设置推送信息后,每一个步骤都有消息通知,并可指定@对应人员,全员实时感知发布进度。

Gitee:https://gitee.com/mnyuan/cronin

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部