cicd 08--基于Jenkins的通用可扩展CICD架构
Posted 昕光xg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cicd 08--基于Jenkins的通用可扩展CICD架构相关的知识,希望对你有一定的参考价值。
cicd 08--基于Jenkins的通用可扩展CICD架构
- 3 案例
1 介绍
随着运维业务的逐渐增加,团队维护的 cicd 流程种类也随之增加,基于Jenkins 的流程基本可以认为绝大多数都是一种定制(当然有些流程可以通过参数解决一类的问题),会对后期带来越来越多的工作量。
因此需要将 jenkins job 抽象出来,使其功能单一、可复用,基于抽象出来的基础 job 再组装成各种满足用户需求的任务。
最终实现的效果为: 一个大的pipeline 能通过类似搭积木的方式快速构建和修改, 大pipeline 调用了多个子pipeline, 通过一连串的子 pipeline 完成用户的需求,使用子 pipeline 的时候只需按需传参数即可.
2 架构
2.1 架构图
主要架构图如下所示, sre 主要做 底层可复用的job, 然后每一个流程都可以分解为多个底层可复用的job, 将这些job 按顺序拼装, 并传递相关参数, 子job 全部执行完成即可完成一个大的流程.
最终将一个主 job 交付给用户即可.
架构优点: 避免重复造轮子, 简化复杂job 的构造过程, sre专注于底层基础job
2.2 主要模块功能
此处列举一些常用的底层job, 后续会在此处新增底层基础job, 需要确保这些job可复用.
- Clone 代码
英文名称: base_clone_code
功能说明: clone 代码到指定目录
参数说明:
node: clone 代码所用的Jenkins agent label
git_repo_url: 代码仓库的url
branch: 代码对应的分支
target_path: 代码clone的目标路径
其它:
- 同一机器拷贝文件
英文名称: base_cp_file
功能说明: 在同一个机器上拷贝文件(夹)
参数说明:
node: 执行拷贝操作的Jenkins agent label
src_file: 原文件(夹)路径
des_file: 目标文件(夹)路径
其它:
- 远程机器拷贝文件
英文名称: base_rsync_file
功能说明: 将本机的文件(夹)拷贝到远程机器上
参数说明:
node: 执行拷贝操作的Jenkins agent label
src_file: 原文件(夹)路径
des_host_info: 目标机器的信息,格式为 user_name@des_server_ip
des_file: 目标文件(夹)路径
其它:
需要提前配置机器 rsync 的 ssh
- Build & push 镜像
英文名称:
功能说明:
参数说明:
其它:
- Deploy 镜像
英文名称:
功能说明:
参数说明:
其它:
- 更新 configmap
英文名称:
功能说明:
参数说明:
其它:
- 更新副本数量
英文名称:
功能说明:
参数说明:
其它:
- 功能检测
英文名称:
功能说明:
参数说明:
其它:
- 删除文件
英文名称:
功能说明:
参数说明:
其它:
- 其它基础功能
3 案例
3.1 场景说明
假设当前有两个底层基础job, 分别为 job-a 和 job-b, 它们都有各自唯一的功能. 此时有一个功能复杂的job job-multi, 该job 可以通过 job-a 和 job-b 协作完成.
三个 job 如下所示:
3.2 Job-multi 的功能脚本
逐 job 的pipeline 脚本如下, 如果有更多其它业务, 也可以按需通过 stage的方式加入, 并填好相关参数即可。
pipeline
agent
node
label "admin"
stages
stage(do job-a)
steps
build job: job-a
stage(job-multi)
steps
echo job-multi
stage(do job-b)
steps
build job: job-b
3.3 执行结果
主流程执行完成
主流程触发 job-a 执行完成任务
主流程触发 job-b 执行完成任务
4 优化实施
实施该方案的时候需要确保各个操作相对单一,因此需要优化现有 ci 、cd 和其它复杂操作,使其更加单一, 此处列举几个常见的优化项。
- 优化现有的 ci 操作, 使其单一, 将无关操作隔离出来
- 优化现有 cd 操作, 使其单一, 抽出无关操作
- 引入制品库或者基础镜像, 减少build 的依赖, 提高build 的速度
5 注意事项
- Sre 或者 Devops 人员专注于 底层基础job, 因此需要确保基础 job 可复用, 避免团队内部人员每次重新造一遍轮子.
6 说明
软件环境:
Docker: 20.10.*
Jenkins 版本: 2.334
参考文档:
jenkins 官方文档
jenkins pipeline之如何串联多个Job
以上是关于cicd 08--基于Jenkins的通用可扩展CICD架构的主要内容,如果未能解决你的问题,请参考以下文章
基于Jenkins+Gitlab+Harbor+Rancher架构的CICD实现