cicd 08--基于Jenkins的通用可扩展CICD架构
  z2z2Sje1ByfQ 2023年11月12日 28 0


cicd 08--基于Jenkins的通用可扩展CICD架构

1 介绍

随着运维业务的逐渐增加,团队维护的 cicd 流程种类也随之增加,基于Jenkins 的流程基本可以认为绝大多数都是一种定制(当然有些流程可以通过参数解决一类的问题),会对后期带来越来越多的工作量。
因此需要将 jenkins job 抽象出来,使其功能单一、可复用,基于抽象出来的基础 job 再组装成各种满足用户需求的任务。
最终实现的效果为: 一个大的pipeline 能通过类似搭积木的方式快速构建和修改, 大pipeline 调用了多个子pipeline, 通过一连串的子 pipeline 完成用户的需求,使用子 pipeline 的时候只需按需传参数即可.

2 架构

2.1 架构图

主要架构图如下所示, sre 主要做 底层可复用的job, 然后每一个流程都可以分解为多个底层可复用的job, 将这些job 按顺序拼装, 并传递相关参数, 子job 全部执行完成即可完成一个大的流程.
最终将一个主 job 交付给用户即可.

架构优点: 避免重复造轮子, 简化复杂job 的构造过程, sre专注于底层基础job

cicd 08--基于Jenkins的通用可扩展CICD架构_CICD架构

2.2 主要模块功能

此处列举一些常用的底层job, 后续会在此处新增底层基础job, 需要确保这些job可复用.

  1. Clone 代码
英文名称: base_clone_code
功能说明: clone 代码到指定目录
参数说明:
node: clone 代码所用的Jenkins agent label
git_repo_url: 代码仓库的url
branch: 代码对应的分支
target_path: 代码clone的目标路径
其它:
  1. 同一机器拷贝文件
英文名称: base_cp_file
功能说明: 在同一个机器上拷贝文件(夹)
参数说明:
node: 执行拷贝操作的Jenkins agent label
src_file: 原文件(夹)路径
des_file: 目标文件(夹)路径
其它:
  1. 远程机器拷贝文件
英文名称: base_rsync_file
功能说明: 将本机的文件(夹)拷贝到远程机器上
参数说明:
node: 执行拷贝操作的Jenkins agent label
src_file: 原文件(夹)路径
des_host_info: 目标机器的信息,格式为 user_name@des_server_ip
des_file: 目标文件(夹)路径
其它:
需要提前配置机器 rsync 的 ssh
  1. Build & push 镜像
英文名称:
功能说明:
参数说明:
其它:
  1. Deploy 镜像
英文名称:
功能说明:
参数说明:
其它:
  1. 更新 configmap
英文名称:
功能说明:
参数说明:
其它:
  1. 更新副本数量
英文名称:
功能说明:
参数说明:
其它:
  1. 功能检测
英文名称:
功能说明:
参数说明:
其它:
  1. 删除文件
英文名称:
功能说明:
参数说明:
其它:
  1. 其它基础功能

3 案例

3.1 场景说明

假设当前有两个底层基础job, 分别为 job-a 和 job-b, 它们都有各自唯一的功能. 此时有一个功能复杂的job job-multi, 该job 可以通过 job-a 和 job-b 协作完成.

三个 job 如下所示:

cicd 08--基于Jenkins的通用可扩展CICD架构_持续集成交付_02

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 执行结果

主流程执行完成

cicd 08--基于Jenkins的通用可扩展CICD架构_jenkins_03

主流程触发 job-a 执行完成任务

cicd 08--基于Jenkins的通用可扩展CICD架构_CICD架构_04

主流程触发 job-b 执行完成任务

cicd 08--基于Jenkins的通用可扩展CICD架构_持续集成交付_05

4 优化实施

实施该方案的时候需要确保各个操作相对单一,因此需要优化现有 ci 、cd 和其它复杂操作,使其更加单一, 此处列举几个常见的优化项。

  1. 优化现有的 ci 操作, 使其单一, 将无关操作隔离出来
  2. 优化现有 cd 操作, 使其单一, 抽出无关操作
  3. 引入制品库或者基础镜像, 减少build 的依赖, 提高build 的速度

5 注意事项

  1. Sre 或者 Devops 人员专注于 底层基础job, 因此需要确保基础 job 可复用, 避免团队内部人员每次重新造一遍轮子.

6 说明

软件环境:
Docker: 20.10.*
Jenkins 版本: 2.334
参考文档:
​​​jenkins 官方文档​

​jenkins pipeline之如何串联多个Job


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  ehrZuhofWJiC   2024年05月17日   36   0   0 jenkinsMac
z2z2Sje1ByfQ