Jenkins 如何迁移 Zadig,并发执行效率提升 100%
我们在「不想放弃 Jenkins?这么做也能云原生」一文中详细描述了如何在保留 Jenkins 的前提下,通过 Zadig 快速提升效率和工程师幸福度。然而,尽管这样做可以取得一些显著的成果,却未能实质解决运维人员对系统维护的繁重负担。实际情况中,Jenkins 的管理和维护存在诸如插件兼容性、内存泄漏、用户权限管理、脚本维护等多方面的问题,导致运维人员仍需花费大量时间进行系统维护。因此,是否可以完全弃用 Jenkins,并将现有任务全部迁移到 Zadig 上执行呢?答案是肯定的。Zadig 不仅具备 Jenkins 的全部功能,而且能够实现软件开发过程中复杂流程的自动化。
一、Zadig 工作流到底有何独特之处?
Zadig 工作流引擎起初基于 Kubernetes 原生能力搭建,借助 Kubernertes 的资源动态分配能力,实现多任务的并发执行,相比 Jenkins 至少可以节省 50% 的资源,并可以提高至少 40% 的任务执行效率。
Zadig 工作流的设计更贴合实际业务场景,支持编排产品交付过程中涉及到的任何系统和工具,如:项目管理系统、代码托管平台、测试平台、部署工具、配置管理工具、数据管理工具、审批系统、企业自建系统等等。Zadig 工作流除了具备 CI 工作流的基本能力(比如克隆代码、执行 shell 脚本、触发器、通知、缓存等等)外,支持以下更多能力:
-
支持多服务共享构建、构建模板、利用 Serverless 资源构建
-
支持多服务的并发构建、并发部署、并发测试
-
支持项目管理中的任务状态变更、配置变更、数据变更
-
支持蓝绿发布、金丝雀发布、分批次灰度发布、MSE 全链路和 Istio 全链路发布
-
支持发布过程审批
-
在执行时支持根据实际的分支策略,自由选择 Branch、PR/MR、Branch+PR/MR、Tag、Commit 方式进行构建
-
......
工作流实现方式的细节差异
工作流关键环节 | Jenkins | Zadig |
执行环境 | 手工制作环境 | 可扩展云原生环境及依赖包 |
代码信息 | 分散配置代码源 | 统一管理多种代码来源 |
执行脚本与变量 | 分散编写脚本 | 统一配置脚本规范 |
定时触发 | 定时触发 | 多种可定制触发策略 |
代码变更触发 | 插件代码触发 | 海量多种触发策略 |
工作流间的串接 | 根据工作流状态触发 | 服务化灵活编排调度 |
多任务并发执行 | 编写脚本控制并发 | 云原生任务GUI 配置并发 |
任务并发数量控制 | 资源节点控制并发 | 统一管理并发调度策略 |
二、如何将 Jenkins 上的配置迁移到 Zadig 上
下面详细介绍如何将已经在 Jenkins 上的相应配置迁移到 Zadig 上,按照不同的阶段拆解迁移的过程。
比较一:执行环境
对于工作流任务依赖的环境,在 Jenkins 上需在对应节点上手工制作,而在 Zadig 上支持管理任务运行时基础环境和依赖的软件包,方便平台运维统一管控业务构建、测试等过程使用的基础资源,保障资源的安全及合规。
Jenkins 任务的执行环境通过在配置中选择运行节点来指定,任务执行过程中用到的软件包需要在对应节点上安装和管理。
Zadig 任务的执行环境通过在配置中选择操作系统和依赖软件包来指定。
比较二:代码信息
对企业内部使用的代码源,在Jenkins上将其分散在不同的任务中进行管理,而在 Zadig 上由管理员统一集成,以确保代码源的安全性。
下面以 GitLab 为例,比对 Jenkins 和 Zadig 上代码信息的配置。
Jenkins 通过配置「源码管理」来实现构建代码源的定义。
Zadig 支持 GitLab、GitHub、Gerrit、Gitee 、其他通用 Git 代码源等代码托管平台的集成,完成集成后可列出代码库中有权限的代码仓库信息,包括 Branch、PR/MR、Tag 等等,对于开发者更加直观、体验更友好。
· 步骤 1:集成代码源。具体过程参考 GitLab 代码源集成 [1]
· 步骤 2:任务中配置代码信息。Zadig 构建、测试、代码扫描及通用任务均支持拉取代码信息。
比较三:执行脚本及变量
对于服务执行脚本和变量的定义,在 Jenkins 上分散在各个任务中进行管理,而在 Zadig 上可以通过构建模版来标准化服务的构建过程,降低运维管理的负担。
下面以一个多服务的代码仓库的构建并推送镜像为例,比较 Jenkins 脚本编写和 Zadig 脚本编写的差异。
Jenkins 执行脚本及变量如下图所示,脚本中主要进行服务构建、镜像构建以及镜像推送过程。其中 $SERVICE、$VERSION、$PWD 变量需要在配置中定义。
Zadig 执行脚本及变量如下图所示,Zadig 构建内置 $SERVICE、$IMAGE 变量,脚本更加简洁。
两者之间的差异:
1. Zadig 任务执行过程中根据工作流配置的镜像仓库自动完成 docker login 操作,所以无需在脚本中声明。
2. 在 Zadig 中镜像命名规则支持统一配置和管理,具体可参考文档 [2],所以无需在脚本中定义 IMAGE 变量的生成规则。
比较四:定时触发
工作流任务的定时执行场景比较常见,Jenkins 针对工作流任务的默认参数可以配置定时触发,而 Zadig 上除了可以指定触发时间周期外,还支持配置任务的执行变量,更加灵活。
Jenkins 触发器支持配置 Cron 表达式来定时触发任务。
Zadig 定时器支持多种触发方式,包括定时循环、间隔循环和 Cron 表达式,以满足各种定时触发的需求。此外,相较于 Jenkins 使用默认参数执行,Zadig 定时器允许配置不同的工作流执行变量,提供更灵活的定制选项。
比较五:代码变更触发
开发者提交代码自动触发工作流执行是持续集成和持续部署(CI/CD)中常见的实践。在 Jenkins 中,为实现这一需求,需要依赖插件。相比之下,Zadig 则内建 Git 触发器功能,无需额外插件,通过灵活的配置满足各种触发场景,从而提升整体效率。
Jenkins 可以通过安装插件实现代码变更触发任务的执行。
Zadig Git 触发器支持代码变更触发,通过定义代码信息、触发事件、代码文件目录以及工作流执行变量,来配置触发规则。这使得在代码库发生变更时,可以灵活而精准地触发相应的工作流,以满足各种复杂的自动化流程的执行。
除了上述两种触发器,Zadig 还支持多种其他触发器,包括「JIRA 触发器」、「飞书项目触发器」和「通用触发器」等,使用详情参考文档 [3]。
比较六:工作流之间的串接编排
企业内部对于一些服务化的任务,例如安全扫描服务,需要进行统一管理并在多个工作流中使用。通常,这些任务由安全部门或平台团队进行统一管理,然后在各个业务工作流中进行调用。为了降低实施和后续维护的负担,一般选择采用多工作流串接的方式,以实现更高效的任务调度和管理。
Jenkins 通过配置「构建其他工程」来触发其他任务。
Zadig 的工作流本身采用了服务化的设计,使得测试、代码扫描等配置可以实现集中化的管理,然后轻松挂接到各个工作流中使用。这种设计使得配置和管理变得更加高效,同时在不同的工作流中灵活地应用这些服务,提高了整体工作流的可维护性和可扩展性。
比较七:多任务并发执行
多任务并发执行在复杂的软件开发流程、持续集成和部署中尤为关键。这能够显著减少工程师的等待时间,提高整体研发效率,从而加速项目进程,更灵活地应对不断变化的需求。
Jenkins 流水线支持不同的 "stage" 并发执行,详细配置请参考以下结构。
Zadig 工作流仅需在「阶段」上打开「并发执行」的开关,即可实现阶段内多个任务的并发执行。
比较八:任务并发数量控制
Jenkins 和 Zadig 均支持同一工作流的多个任务并发执行。Jenkins 通过资源节点来控制并发数量,而 Zadig 则统一管理并发调度策略,具有灵活控制任务优先级能力。
Jenkins 通过在节点上配置「任务执行数量」来控制多个任务的并发,单个 Jenkins 任务的并发可以在任务配置中指定。
Zadig 通过在任务配置中修改「任务并发数量设置」实现并发数控制,其中「工作流任务并发数量」控制同时执行的工作流任务数,「单任务服务并发数」控制同一个工作流任务中服务的并发数量。除此之外,面对低优先级任务占用全局并发数量的场景,可以通过配置工作流的「执行并发数」来解决。Zadig 具有更自由的任务并发数控制,能够灵活应对企业内部复杂的任务并发场景。
除以上能力外,Jenkins 通过插件来扩展更多的能力,而 Zadig 可以通过开发「自定义任务」,和企业自建系统打通,来满足企业复杂流程,具体开发过程参考文档 [4]。
参考链接
[1] https://docs.koderover.com/zadig/settings/codehost/gitlab/
[2] https://docs.koderover.com/zadig/project/service/k8s/#策略配置
[3] https://docs.koderover.com/zadig/project/workflow-trigger/
[4] https://docs.koderover.com/zadig/settings/custom-task/
立即体验 Zadig V2.0 新架构,开启高效交付之旅!🚀
Zadig 开放,链接,专业
Zadig 在 Github / Zadig 在 Gitee
推荐阅读:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OpenInfra Days China 2023开幕在即,主论坛议程已揭晓
经过十多年的发展,云计算在OpenStack等开源技术的支持下逐步走向成熟,在各行各业都得到了广泛的应用,成为支撑大数据、物联网、边缘计算和人工智能等领域的基础平台,同时也催生出更多新需求、新技术、新问题。 为增强OpenInfra全球社区韧性,推动开源基础设施在特定地区的发展,OpenInfra基金会在欧洲、亚洲分别设立了运营中心,以促进和维护开源社区及开源技术在这两大区域的发展,灵活应对各种机遇与挑战。 OpenInfra Days作为最重要的区域性活动之一,在增进本土企业、组织、开发者与用户间的交流、分享与协作方面一直发挥着重要作用,今年的OpenInfra Days China大会也如期而至。12月1日,来自OpenInfra社区的技术专家和行业领袖,以及国内活跃在开源基础设施领域的企业和开发者将齐聚北京海航万豪酒店,就开源基础设施项目的最新进展、生产实践以及所面临的挑战进行面对面分享与交流。 距离OpenInfra Days China 2023还有不到三天的时间,备受期待的主论坛议程已揭晓! 开幕演讲& Global OIF Updates 演讲时间:9:00 -...
- 下一篇
智能制造一体化 v3.11.3 发布
智能制造一体化管理系统[SpringBoot2 - 快速开发平台],适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模块、动态表单、知识库、公告模块、企业论坛、云售后模块、生产模块、系统模块化同步模块等多种复杂业务功能。 有一些小伙伴很好奇最近更新的内容和智能制造有什么关系? 答:目前 Skyeye 整体在做重构,优先从底层的一些功能开始,所以现在大家看到的和智能制造的联系不是很大,也希望大家能够理解,一个大型的智能制造对底层的依赖性也是非常高的。 智能制造一体化 v3.11.3 发布,重构内容如下: 薪资模块:薪资要素字段,社保公积金 EHR:员工档案 ERP:工艺路线管理关联工序切换组件关联,商品管理/加工单管理关联工序切换为组件关联 组件:新增工序选择(包含车间),适用对象 学校模块:新增学校模块ER图 手机端:新增手机端规划设计以及部分原型图,开发框架整理完成 解决若干问题。 Skyeye 具备低代码、快捷开发、可视化设计、微...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6