(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210850847.3
(22)申请日 2022.07.20
(71)申请人 杭州雷数科技有限公司
地址 310000 浙江省杭州市余杭区仓前街
道文一西路1378号1幢E座180 6室
(72)发明人 闫安 旷晓鹏
(74)专利代理 机构 杭州兴知捷专利代理事务所
(特殊普通 合伙) 33338
专利代理师 董建军
(51)Int.Cl.
G06F 8/65(2018.01)
G06F 9/455(2006.01)
G06F 9/50(2006.01)
(54)发明名称
一种基于Serveless Jenkin s的CICD系统和
实现方法
(57)摘要
本发明公开了一种基于Serveless Jenkins
的CICD系统和实现方法, 包 括: 代码仓库、 应用中
心、 Serverless Jenkins以及k8s集群服务四个
部分; 开发人员将通过审核的代码提交到代码仓
库; 应用中心承担着开发人员对于项目应用构建
信息的统一管理, 同时还要协调好Serverless
Jenkins服务和k8s集群服务的部署和调度;
Serverless Jenkins为一个serverless集群, 部
署了一个JenkinsMaster服务; k8s集群服务接收
来自应用中心的操作请求, 负责更新。 本发明可
以支持开发人员自定义构建流程模板, 动态添加
容器镜像服务仓库以及合理使用机 器资源。
权利要求书2页 说明书4页 附图2页
CN 115185561 A
2022.10.14
CN 115185561 A
1.一种基于Serveles s Jenkins的CICD系统, 其特 征在于:
其包括: 代码仓库、 应用中心、 Serverles s Jenkins以及k8s集群服 务四个部分;
代码仓库支持多分支多版本控制, 同时支持Webhook代码更新推送事件, 开发人员将
通过审核的代码提交到代码仓库;
应用中心作为整个CICD系统的核心模块, 承担着开发人员对于项目应用构建信息的统
一管理, 同时还要协调好Serverles s Jenkins服务和k8s集群服 务的部署和调度;
Serverless Jenkins为一个serverless集群, 部署了一个 JenkinsMast er服务, m aster
服务负责Jen kins服务管理;
k8s集群服务接收来自应用中心的操作请求, 负责k8sdeployment、 k8sIngress以及
k8sService的更新。
2.根据权利要求1所述 的一种基于Serveless Jenkins的CICD系统, 其特征在于: 所述
代码仓库采用阿里云Code、 Github或者码云中的一种。
3.根据权利要求1所述的一种基于Serveles s Jenkins的CICD系统, 其特 征在于:
应用中心中应用部署信息包含以下信息: projectName, appName, appType,
clusterName, codeLib raryAddress, dockerAccount, moduleNames, ingressAddress, 端口
号。
4.根据权利要求3所述的一种基于Serveles s Jenkins的CICD系统, 其特 征在于:
当接收到开发人员的部署 或者构建请求 时, 应用中心则需要根据应用的信 息进行工作
调度;
(1) 如果是镜像构建请求, 应用中心则会读取相应对应部署Jenkins容器执行模板, 通
知serverless jenkins模块创建相应的slave服务, 同时Jenkins也会提供相应的容器启动
yaml模板作为slavek8s pod资源描述, 构建过程中涉及的docker账号都是动态根据应用参
数配置读取;
(2) 如果是应用服务部署, 应用中心则会通过k8sapi server接口进行服务部署创建、
Service创建以及Ingress创建, 部署过程中涉及的docker账号都是动态根据应用参数配置
读取配置 。
5.根据权利要求 4所述的一种基于Serveles s Jenkins的CICD系统, 其特 征在于:
Serverless Jenkins采用阿里云Serverless Kubernetes集群, 作为开发人员, 无需购
买节点即可直接部署容器应用, 无需对集群进行节点维护和容量规划; 当一个Jenkins
Slave被拉起来的时候, 触发JenkinsSlave构建机制有两种, 一种是在应用中心手动触发,
另外一种是通过webho ok钩子推送事 件触发。
6.根据权利要求5所述的一种基于Serveles s Jenkins的CICD系统, 其特 征在于:
其构建pipel ine流程主要包含以下步骤:
(1) 代码检查
根据项目中的代码仓库信 息进行元代码拉取, 拉取完后对代码进行秘钥保密信 息进行
审查, 若发现相关保密信息则停止pipel ine构建流 程, 无任何异常则视为代码检查 通过;
(2) 代码编译
根据应用语言类型选择相应的应用编译工具进行代码编辑, java语言则使用maven+
open jdk, 前端项目则采 取nodejs技术, 构 造器都是通过模板代码进行配置,编译成功后则权 利 要 求 书 1/2 页
2
CN 115185561 A
2会将会相应的代码文件保存到指定目录中, 如果失败的话则同样会终止pipel ine构建;
(3) docker镜像构建
Docker容器镜像构建过程中的打包工具采用kaniko, kaniko接受三个参数: 一个
Dockerfile, 一个构建的上下文, 一个将 镜像推送到的注册表; kaniko在执行程序镜像中提
取基本镜像的文件系统; 然后, 在 Dockerfile 中执行任何命令, 快照用户空间中的文件系
统; Kaniko 在每个命令后都会将一层已更改的文件附加 到基本镜像; 最后, 执行程序将新
镜像推送到指定的注 册表。
7.根据权利要求6所述的一种基于Serveles s Jenkins的CICD系统, 其特 征在于:
Jenkins代码构建流程是通过pipeline流水线控制, 在实际应用过程中可以动态更新
pipeline构建逻辑, 加入一个新的或者减少一个旧的构建步骤。
8.根据权利要求1 ‑7中任意一项所述的一种基于S erveless Jenkins的CICD系统, 其特
征在于:
根据应用配置可以启动多pod模式从而提高应用服务的一个并发执行能力; 在应用升
级过程中可以选择滚动重启升级, 保证服 务永远至少有一部分服 务在线使用。
9.根据权利要求8 所述的一种基于Serveless Jenkins的CICD实现方法, 基于权利要求
8所述的系统实现, 其特征在于: 开发人员在代码变更后将代码推送到代码仓库, 然后通过
应用中心服务部署功能启动代码构建部署流程, 或者通过代码仓库自带的Webhook功能检
测到相应代码变化调用Jenkins服务的回调触发器从而启动代码构建流程, 应用中心根据
开发人员保存的部署配置信息选择相应的构建流程模板数据, 调用ServerlessJenkins集
群,唤起相应的构建pod slave进行代码构建, slave启动后根据数据中的pipeline信息执
行代码构建, 构建完成后, Jenkins服务会通知应用中心, 应用中心会根据配置选择是否自
动更新kuber nets集群中对应的服务应用, 也可支持一键式手动重新更新相应的k8s服务应
用。权 利 要 求 书 2/2 页
3
CN 115185561 A
3
专利 一种基于Serveless Jenkins的CICD系统和实现方法
文档预览
中文文档
9 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共9页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 13:26:51上传分享