我们基于禅道打造了持续交付系统,整合了多个开源系统(包括禅道zentao、jenkins、gitlab、nexus、harbor、ldap、mysql等等),并进行大量的二次开发,将多个系统功能(项目管理、集成管理、代码仓库管理、编译私服,镜像仓库管理、用户认证等)、多个开发环境(开发环境、测试环境、预发布环境、灰度环境、生产环境等),多种发布流程(代码扫描、版本集成、版本发布等)进行统一整合,提供一套高度集成和高度自动化的项目管理+版本集成发布系统。
1、概述
因为公司大部门在使用禅道进行项目管理、缺陷管理等,所以我们希望基于此对于禅道做二开扩展,支持到CICD,最终将禅道打造成一个DevOps平台。
选择禅道主要原因:
- 有使用历史,符合大多数业务项目的操作习惯
- 敏捷管理,基于Scrum的角色且相关流程和功能完善
- 社区版开源,可以基于源码进行修改
拓展后禅道能力
- 使用禅道来进行项目任务管理
- 只使用禅道来做bug管理
- 只使用禅道来进行产品管理
- 个人使用禅道来做事务跟踪管理
- 仅使用版本集成流程(扩展功能)
- 仅使用上线流程审批功能(扩展功能)
- 仅使用客户端渠道管理功能(扩展功能)
2、持续交付系统框架
这个比较简单吧,其实有关这种分层的DevOps架构,应该都是大同小异,仅供参考哈😉
3、持续交付流程
主要是基于Helm进行K8s的容器部署,整个交付流程如下:
- 使用Zentao作为项目管理工具:管理基本需求、迭代、缺陷等
- Zentao也作为用户CICD系统平台,用户再禅道上做集成、构建、部署等操作
- CICD的后端集成工具:Jenkins
- 部署至K8s集群中,部署主要的使用是Helm进行部署管理(注:当时使用的是Helm2)
注:我们自己编写了Helm的Template模板工程,基本涵盖了很多的使用场景,这个后续我也会跟进分享给大家,尽情期待……
4、工具链选型
其实DevOps工具链产品有很多,大家可以根据自己的实际情况选择,我们基于Zentao打造的持续交付平台选择的是如下工具链。因为当初我们还木有打通持续测试这一环节,所以这个相对有些简陋了,但是还算清晰!