为什么你应该停止依赖Jenkins的插件?

根据ActiveState的CI/CD 2020状态调查结果,Jenkins是市场上最常用的CI/CD工具。作为市场上最早的工作运行者之一,它有足够的时间来获得普及,并且是推进构建和交付软件的DevOps方法的一个重要组成部分。

由于有1800多个插件,Jenkins非常容易扩展–有了正确的插件集,你几乎可以做任何事情。插件库允许每个Jenkins用户最终获得个性化的体验,这在很大程度上取决于他们安装的插件。

插件可能是Jenkins的核心,但它们也很快成为使用Jenkins的团队的负担。为成长中的团队和公司管理Jenkins平台很快就会成为一个瓶颈,拖慢你的速度而不是提高你的敏捷性。

在本指南中,你将进一步了解Jenkins的一些缺点,以及了解一些替代方案。

什么是Jenkins插件?
插件是使用Jenkins的核心,它们在安装过程中首次出现,在那里你被要求选择一个插件来开始使用。默认安装有大约20个插件,加上你在安装时选择的任何插件。这些插件负责将你的CI/CD与外部工具(如GitHub或Bitbucket的版本控制)集成。插件还扩展了Jenkins的能力和工作方式。甚至协调构建的管道系统也是一个插件,可以使用其他插件进行修改。

你可以通过市场向Jenkins添加新的插件。市场上的所有插件都是基于社区的,并且是开源的,这意味着任何人都可以创建一个符合他们需求的自定义插件,并将其列在市场上。通常,在选择一个插件时,有三件重要的事情需要关注。

插件的受欢迎程度可以通过安装的数量来评估
它的维护情况如何,这可以通过查看最近一次更新的时间来估计
需要的依赖性,例如你需要安装的其他插件

为什么Jenkins的插件可能是坏的
虽然大量的插件曾经被看作是平台的优势,但现在它经常被看作是一个缺点,或者至少是一个挫折的来源,这助长了许多人对Jenkins的爱恨情仇。

当它第一次发布时,Jenkins感觉像是一个美妙的自助服务环境,一个可靠的开发者或团队可以通过Jenkins管道和正确的插件集做几乎任何事情。然而,今天,你需要真正的Jenkins专业知识来维护Jenkins服务器,这是一个缺点,特别是与市场上较新的SaaS CI/CD选项相比。

有许多与Jenkins插件生态系统相关的反复出现的问题。第一个是无休止的升级和依赖性的循环。一个简单的项目可能需要超过25个不同的插件,因为你安装的每一个插件都可以安装其他插件,而这些插件是第一个插件工作所需要的。这就导致了这样一种情况:你可以安装两个插件,每个都需要相同的第三个插件来工作,而每个都依赖于第三个插件的不同版本,导致安装问题或错误。

当你发现一个插件有安全漏洞时,更大的问题就出现了。如果你发现一个插件不安全或有漏洞,你可以在GitHub上打开一个问题,等待插件被修补,但如果补丁永远不会来呢?你可以忍受安全漏洞,找到一个替代的插件,并修改你所有的管道以适应新的插件,或者分叉该插件,打上补丁,并成为该插件的新维护者。鉴于每天都有新的安全漏洞被发现,而且插件需要经常打补丁,这很快就会成为一个很大的工作。

这也导致了Jenkins插件的另一个问题。即使是非常受欢迎的插件,也经常被维护得很糟糕,或者被原始维护者完全放弃。从维护者的角度来看,这是完全可以理解的。插件的创建是为了解决一个问题,而大多数维护者并不打算在工作之余成为专业的插件维护者。但是,从用户的角度来看,这导致了插件的支持率很低,因为维护者是社区成员,没有义务无限期地维护插件。

Jenkins插件的最后一个问题是缺乏透明度。如果不仔细检查代码,你就无法知道一个插件的范围,而且你限制插件在你的服务器上的访问和行动的能力有限。因此,在选择插件时,信任因素非常重要,你需要注意减少潜在的攻击面。

Jenkins插件如何影响你的组织
当你考虑到与单个团队一起使用Jenkins时,这些问题可能看起来不是一个大问题。他们可以用自己喜欢的一套插件建立他们的管道基础,假设没有安全问题,一切都很好。

但是,当公司发展壮大,更多的开发人员加入进来,新的团队成立,并且有多个应用程序和服务,Jenkins插件就不能很好地扩展。如果你让每个人使用他们想要的任何插件,你会很快遇到依赖性和升级问题。另一方面,如果你限制开发人员可以使用的插件,你最终会得到一个沮丧的团队和开发人员,他们觉得你在阻止他们将工作流程中乏味的方面自动化。

Jenkins只允许有一个主节点,因此,在设计时根本没有考虑到高可用性。由于这些设计选择,不得不重新启动服务器来改变配置或安装新的插件会导致停机,并打断你的组织中每个依赖Jenkins的人的工作。这个难题没有简单的解决方案。为每个团队创建一个Jenkins服务器将是非常不划算的,而且会在团队之间形成孤岛。拥有独立Jenkins服务器的团队会根据不同的插件集建立不兼容的管道,为你的团队不能相互分享他们的自动化工作的情况做准备。

你不能让Jenkins成为一个真正的自助服务平台,因为这在操作上会很复杂,并减少团队之间的合作。但反对Jenkins插件的最大论点是,插件是一种安全隐患。如前所述,几乎所有的插件都是由社区创建和支持的。你需要相信维护者使用了安全的最佳实践,并保持插件对新发现的漏洞进行修补,如果做得正确,这可能是每周的工作。CI/CD平台通常可以访问许多系统,并拥有修改你的基础设施和与你的生产环境互动所需的凭证。这使得任何CI/CD平台成为你的基础设施中非常敏感的一部分,安全应该是这些工具的首要任务。

如何才能不再依赖Jenkins的插件?
现在,你已经对Jenkins插件的一些问题有了很好的了解。如果你正在考虑摆脱它们,转向一个更安全的基础设施,这里有一些步骤要做。

精心策划插件
创建一个精心挑选的插件的短名单,并坚持使用这些插件。这个名单应该考虑到安全和可维护性问题。一般来说,最好坚持使用那些提供与云供应商(如GitHub或Amazon Web Services)集成的插件,因为它们通常得到这些云供应商的社区和开发人员的大力支持。例如,GitHub插件是一个维护良好的插件,你可以信赖。在主服务器上运行新的插件和升级之前,先在第二台Jenkins服务器上测试这些插件。

避免使用那些改变Jenkins管道工作方式的插件,因为如果这些插件出现故障,不再被维护,或者出现安全漏洞,你就需要重做整个管道。

主动关注你的插件的健康状况,检查它们的GitHub仓库,看看它们是否被积极维护;如果它们没有,你应该寻找一个替代品。这可以防止将来在升级Jenkins服务器或发现安全漏洞时出现停机。插件是独立的软件,具有潜在的可利用的漏洞,攻击者可以利用这些漏洞进入你的构建系统–以及Jenkins出于需要被授予读/写权限的系统的所有其他部分,例如你的代码库、云提供商和网络连接。正如SolarWinds通过构建管道注入恶意软件事件所表明的那样,CI/CD管道是构建过程中受信任的部分,只需要一段恶意代码,不仅使你的公司,而且使你的所有客户都受到攻击。这一领域的极端敏感性使得插件的监控和管理变得绝对重要。

依靠基于容器的步骤
容器技术使你可以将环境与所有的依赖性打包。多亏了Docker插件,你可以在Docker容器内运行Jenkins构建。Docker容器可以使用为任务创建的镜像,并作为Jenkins代理,为你的构建提供所有必要的依赖,消除了在服务器上安装插件的需要。

使用更少的插件
解决Jenkins插件问题最简单的方法之一就是少用插件。你使用的插件越少,你遇到的问题就越少。为了达到这个目的,你可以偏爱脚本而不是插件。例如,发送Slack通知就像向API发送HTTP请求一样简单,而且可以让你避免依赖第三方插件。 脚本可以比插件更可靠,因为你可以在本地使用它们来执行相同的动作。虽然这看起来比使用插件更费事,但你可以在整个公司内分享你的自动化脚本,并在任何管道中使用它们,而不影响Jenkins服务器。

第二种方法是尽可能地使用Jenkins模板。模板让你定义可重复使用的管道(作业)片段,并增加一层抽象,使开发人员更容易配置和使用Jenkins。使用模板为你提供了一个简单的方法来确定所需的插件,因为你需要的插件就是模板中引用的插件。这为你提供了一个协作建立管道的地方,并减少你在整个组织中使用的插件数量。

总结
Jenkins和它的插件生态系统对于为他们的项目寻找CI/CD解决方案的人来说是非常有吸引力的。然而,维护不善的插件、多种不同的依赖关系和安全风险使许多人对这个工具感到失望。

Jenkins的插件管理会影响你的组织,管理不善的插件会使你的组织处于风险之中。实施缓解策略很重要,比如通过定义标准作业或管道来尽量减少插件的数量,仔细策划你的插件,在一个单独的实例上测试插件和升级,使用基于容器的作业来减少你对Jenkins插件的依赖。

如果你厌倦了管理你的CI/CD生态系统,包括你的Jenkins服务器,你可能会对一个无代码的DevOps平台感兴趣,该平台提供集成以取代许多Jenkins插件。像这样的平台还可以与你现有的工具连接,使你的团队更加敏捷,反应更加迅速,让你专注于创造伟大的软件,而不是管理你的管道。

今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

Original: https://www.cnblogs.com/wintersun/p/16390169.html
Author: PetterLiu
Title: 为什么你应该停止依赖Jenkins的插件?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553944/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • VIM简单配置

    配置vim配置 编辑配置文件 feng@mint ~ $ vim ~/.vimrc 配置如下主要配置为自动换行,设置行号,设置tab键为4个空格,同时将tab键自动转换成空格 se…

    技术杂谈 2023年6月21日
    093
  • 什么是CLI?

    命令行界面(英语:command-line interface,缩写]:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接…

    技术杂谈 2023年5月31日
    0101
  • Vuex 简单使用

    官网:https://vuex.vuejs.org/zh/ 参考文章:https://www.cnblogs.com/chinabin1993/p/9848720.html Vue…

    技术杂谈 2023年7月25日
    082
  • Invalid argument supplied for foreach() in wp-include/script-loader.php如何解决

    今天小美眉说网站头部多了一行错误提示:Warning: Invalid argument supplied for foreach() in /wp-includes/script…

    技术杂谈 2023年5月30日
    0123
  • How To Write A Business Plan 如何撰写商业计划书 笔记

    一、计划书的结构 ■概述 ■简介 ■业务背景 ■产品 ■市场 ■运营 ■管理 ■提案■财务背景 ——目前的交易情况 ——财务预测 ■风险 ■结论 ■附录 二、概述 尽管概述出现在计…

    技术杂谈 2023年5月31日
    0105
  • MySQL8.0新特性—窗口函数

    窗口函数(window functions)是一种对结果集进行计算,并将计算结果合并到结果集上返回多行的一类函数。MySQL8开始支持窗口函数,包括RANK()、LAG()和NTI…

    技术杂谈 2023年7月24日
    068
  • html换行的方法

    1、使用 1 <html> 2 <body> 3 <p> 4 春眠不觉晓&…

    技术杂谈 2023年7月11日
    086
  • Codeforces1514B

    问题描述 给你两个数n,k,问可以构造多少n个最大位数为k数按位与为0并且这n个数加起来最大的合法序列,答案对1e9 + 7取模。 思路分析 首先我们考虑这n个数按位与以后为0这个…

    技术杂谈 2023年7月24日
    079
  • .net自动分类算法【原创】

    目前自动分类算法是参考网上的思路和想法个人自主研发的。 当然互联网上有很多人采用不同的方式去解决自动分类问题,也有不同的算法和论文支持去做,但纵观自动分类这块工作是属于机器学习这块…

    技术杂谈 2023年7月24日
    063
  • N68第一周作业

    1. 图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别? BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以&…

    技术杂谈 2023年6月21日
    0109
  • jvm的简介

    什么是jvm? java虚拟机就是二进制字节码的运行环境。我们可以把jvm看做是运行在不同系统上的一个软件应用的计算机,就比如说我们要打开图片,就得用看图软件,或者我们要对文件进行…

    技术杂谈 2023年7月11日
    0105
  • RabbitMQ与SpringBoot整合

    前文总结了Dubbo与SpringBoot的整合(https://www.cnblogs.com/cott/p/12373043.html),本文基于这套框架,引入RabbitMQ…

    技术杂谈 2023年7月25日
    083
  • 贝克莱悖论

    17世纪后期,牛顿、莱布尼茨创立微积分学,成为解决众多问题的重要而有力的工具,并在实际应用中获得了巨大成功,然而,微积分学产生伊始,迎来的并非全是掌声,在当时它还遭到了许多人的强烈…

    技术杂谈 2023年5月31日
    098
  • CxSAST 安装教程

    一:下载 二:安装 1:解压 2:启动安装包 3:操作安装界面 4:检查必备安装工具一: sqlserver2019 安装 详情请参考:https://www.cnblogs.co…

    技术杂谈 2023年5月31日
    090
  • Apollo3-Blue-MCU芯片典型硬件电路解析

    一 芯片简介 1.简介 Apollo3 Blue Wireless SoC是一款超低功耗无线mcu芯片,它的运行功耗降至6μA/ MHz以下。该器件采用ARM Cortex M4F…

    技术杂谈 2023年5月31日
    0104
  • 我是如何使用freemarker生成Word文件的?

    推荐:亲身体验,数次踩坑,遂撰写此文,以备各位不时之需。 背景 一天,产品经理递给我了一份word报告,我定睛一看这个文档有大大小小的标题层级,还有排版好的段落、各种一目了然的饼图…

    技术杂谈 2023年7月25日
    0134
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球