【译闻】Jenkins与持续交付的若干问题

关于译者Ghostcloud
Ghostcloud(中文名:精灵云)是成都精灵云科技有限公司旗下的基于Docker的PaaS/CaaS平台品牌。公司成立于2015年,核心团队由来自EMC、Veritas、华为、IBM、Microsoft的核心技术主管和架构师组成。精灵云作为国内首批从事容器虚拟化研发的企业,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,在国内Docker社区贡献排名前三。主创团队曾参与Beego开源项目研发,并主导发布《Docker容器实战:原理、架构与应用》一书。Ghostcloud因容器技术而生,致力于为多个领域的“互联网+”转型企业提供服务,是一流的企业级容器云服务专家。

今天我们和大家详细聊一聊一直非常受欢迎的开源工具——Jenkins。
f

We Like Jenkins!

众所周知,Jenkins在软件开发流程中非常有用,是一款很棒的工具,但Jenkins和其他CI服务器一样,在软件交付过程中也会或多或少出现一些问题。软件交付团队往往在部署Jenkins以及这类工具的时候会犯错,使得开发效率变低,削弱了团队的敏捷开发能力,同时也失去了使用最新技术创新所需的灵活性。

使用Jenkins会出现的若干问题

问题1:Jenkins的插件太多

插件不一定是坏事,当它们都使用正确时,确实是很好的资源。用户可以向其使用的工具中增加额外的功能,这当然是最好的。但Jenkins的插件并不能为平台提供核心功能以外的任何可拓展功能,相反,在大多数情况下,使用Jenkins插件,团队只能完成基础的开发工作。

例如,要Docker一个构建环境,你需要一个插件。你从GitHub下载,同样,你需要一个插件。你想PAM提供支持,你也需要一个插件。

但可以肯定的是,Jenkins的 1500个插件并不是每个人都需要。所以通过插件提供帮助,这很有意义,就比如PagerDuty或Azure Storage兼容性,有一部分用户可能并不需要这些功能。

但如果你想通过Jenkins插件来做任何事情,这都是欠妥的。因为这就意味着交付团队要花更多的时间来安装和配置插件,如此才能开始愉快的工作。然而还有一个更大问题,那就是大多数Jenkins的插件都由第三方编写的,质量不一样,而且在没有详细描述的情况下可能会不支持。

可见,构建基于第三方插件的软件交付链,并不是一个保证可用性或稳定性的好办法。

问题2:Jenkins不是为Docker而设计

早在2000年上半年,在设想容器和微服务作为软件部署的首选基础设施之前,CI服务器就已经存在。它确实是一种相对较老的技术,通常是DevOps的一部分。

因此,传统的CI服务器不能帮助团队使用像Docker容器这样的基础架构,他们只能通过大量插件与Docker进行不恰当的整合。然而事实上,大部分插件由第三方提供,并在与Docker相关的平台上使用。虽然Jenkins为Docker提供了14+个不同的插件,但其中六个是针对Docker的核心平台使用。

Jenkins与大多数其他CI服务器一样,都建立在裸机服务器和虚拟机时代。后来,在Docker的支持下才进行了处理。所以在这个倾向于Docker的大环境下,这并不是CI服务器运行的好方法。

问题3:Jenkins不能较好的支持微服务

Jenkins和大多数CI服务器一样出现在Docker之前,也出现在微服务流行之前。 有些人早在2000年的时候就在开展SOA工作, Jenkins在那时也首次被使用。而在二十世纪八十年代初,微服务的概念就已经存在。但直到Docker出现,微服务才开始真正实现。

看到这里,或许你能猜到Jenkins并不能很好支持微服务, 而事实上也是如此。因为Jenkins缺乏对集成和一次测试多个服务的支持,而这些都是微服务环境下的基本功能。

除非你计划多个流水线的开发,否则Jenkins在帮助开发下一代微服务应用程序方面做得并不是太好。

问题4:CI!=CD

Jenkins和CI服务器最大的问题是,有时交付团队会将持续集成(CI)与持续交付(CD)混在一起。而事实上,这两者是不同的。
CI是CD的一部分,但是要实现完整的CD,需要的不仅仅是CI服务器。

无论什么时候,CD都需要自动发布到当前使用环境中。这需要如“Steps”之类的工具来实现,将软件交付任务自动化到CI服务器的范围之外。CD这一过程需要工具和渠道,使软件交付团队达到无缝协作。

当建立一个CI服务器时,就马上考虑软件交付工作完成,这本身就是在犯一大错误。

改变Jenkins思路

为什么经验丰富的软件工程团队会犯这样的错误?这不是因为他们不了解,亦或是无法跟上最新的创新。问题在于团队被误导去尝试效仿大企业,并使用最有效的软件交付手段,想要做成和Google、Netflix一样。这些企业着力于利用开源工具链和大量基础设施,构建出非凡的敏捷软件交付通道。

然而,这些公司之所以能做到这些,绝不仅仅是因为他们的部署工具,而是他们的思路。这就像是你能使用像Google一样的工具,但你不能像它那样的高效。较小的企业并不能意识到这一点。只有当他们真正拥有正确的思路和过程时,才能克服Jenkins这类工具带来的局限性,并优化他们的软件交付流程。

没有工具链是完美的,但当你有这样思路时,同样可以实现软件交付完美(或至少与其相近的东西)。如果你的软件交付方式仍然围绕Jenkins建立,你无疑会错失做的更好的机会。要实现这些仍需要研发思路与过程的革新。

原文链接:https://thenewstack.io/many-problems-jenkins-continuous-delivery/

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/96309

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。