实时警报通知:微信告警通知的重要性解析
838
2023-04-04
基于Jira的运维发布平台的设计与实现
上线发布是运维的日常工作,常见的发布方式有:
手动发布Jenkins发布平台Gitlab CI......
除此之外还有需要开源软件,他们都有非常不错的发布管理功能。
面临的问题
作为运维人员,上线发布是必不可少的一环,一个正常的发布流程是怎么样的?
需求方提发布任务,走发布流程供应方执行发布上线
环节看似简单,但是中间其实是有断层的。一般企业在走上线流程都是通过一些公共渠道,比如邮件、钉钉、飞书的流程,这些都很难和运维执行上线发布平台进行关联上,而且也不够直观。所以我们就需要解决以下几个问题:
流程和运维平台建立连接
从发起到结束形成闭环
为了选择JIRA?
JIRA优秀的项目管理,问题跟踪的工具,另外它的流程管理和看板模式也能够非常直观看到目前流程处在什么位置。另外它可以通过webhook和其他平台建立友好的连接,方便扩展。再者对于开发、测试、项目管理人员等来说Jira是他们日常的工具,使用熟练度非常高,降低了额外的学习成功。鉴于此,我们选择JIRA作为运维发布平台,争取做到一个平台做所有事。
方案设计
设计思路
充分利用Jira、Gitlab的webhook功能,以及Jenkins的灵活性。
Jira上更新状态触发Jenkins执行合并分支流水线Gitlab上代码合并成功后触发Jenkins执行发布流水线将发布结果通过钉钉等软件通知相应的人
整体思路相对简单,难点主要集中在Jenkins获取Jira、Gitlab的数据,所幸Jenkins的插件功能非常丰富,这里就使用Generic Webhook Trigger插件,可以很灵活地获取到触发软件的信息。
发布流程方案
然后整理出如下的发布流程。
涉及软件
软件功能
Jira 发布流程管理 Jenkins 执行各种流水线 Gitlab 代码仓库 Kubernetes 应用管理 Helm/kustomize 包管理 钉钉 消息通知 trivy 镜像扫描 镜像仓库 阿里云镜像仓库
PS:这里没有具体的软件部署
Jira与Jenkins进行集成合并分支
Jenkins配置
Jenkins的配置主要有两部分,如下:
配置Jenkins ShareLibrary功能编写Jira触发相应的Jenkinsfile
(1)Jenkins上配置ShareLibarary 系统配置-->系统配置-->Global Pipeline Libraries
(2)创建流水线,配置Webhook以及添加Jenkinsfile
配置触发器
先配置一个变量和正则
再配置一个Token即可
配置流水线,添加对应的Jenkinsfile
image.png
(3)Jenkinsfile的主要逻辑如下
PS:下面仅列出大致的框架,并没有详细的代码
获取Jira的配置信息进行解析根据不同信息执行不同的操作合并分支主要是通过调Gitlab的API接口完成
以上Jenkins上配置基本完成。
Jira上配置
Jira上的主要配置如下:
建立工作流工作流关联项目配置项目触发Webhook
建立工作流
将工作流关联项目组
配置webhook
设置-->系统-->网络钩子
上面配置完成后,即完成Jira上配置,然后就可以在对应项目的看板上查看所以待发布的项目,如下:
Gitlab与Jenkins集成发布系统
开发分支简要
这里主要使用的是功能分支开发模式,主要分为以下几个分支:
DEV分支:开发环境分支TEST分支:测试环境分支UAT分支:联调环境分支PRE分支:预发布环境分支MASTER分支:生产环境分支
代码合并路线是:DEV->TEST->UAT->PRE->MASTER 然后根据不同的分支判断执行不同环境的部署。
Jenkins配置流水线
(1)配置Webhook插件参数
获取Gitlab分支
定义gitlab push条件,不是任何改动都需要触发流水线
定义过滤正则表达式
(2)配置Jenkinsfile
(3)在Gitlab上配置钩子 settings->webhook
到这里,Gitlab和Jenkins集成就差不多完成了,后面就是具体的调试以及配置了。
写到最后
道路千万条,适合自己才最好。
上面是根据工作的实际情况做的运维发布,整体思路还有实现方式并不复杂,主要是充分利用各个软件的webhook能力,以及充分利用Jenkins灵活的插件功能,使得从创建发布计划和执行发布进行打通。
个人觉得还是有必要记录一下,也希望能帮助到有这方面需要的人。
发表评论
暂时没有评论,来抢沙发吧~