写点什么

演讲回顾:如何为大规模研发团队加速 CI 构建,实现高效流水线

  • 2024-02-02
    上海
  • 本文字数:4488 字

    阅读完需:约 15 分钟

近日,龙智联合 Atlassian 举办的 DevSecOps 研讨会年终专场”趋势展望与实战探讨:如何打好 DevOps 基础、赋能创新”在上海圆满落幕。龙智 Atlassian 技术与顾问咨询团队,以及清晖、JamaSoftware、CloudBees 等生态伙伴的嘉宾发表了主题演讲,分享他们在 DevOps 领域的丰富经验与独到见解,并围绕 Atlassian 最新产品趋势与 Jira、Confluence 等工具的最佳实践,展开了深入探讨。


本篇文章回顾 CloudBees 亚太区资深解决方案工程师杨海涛的演讲,分享如何将 Jenkins 升级为能够为大型企业提供支持的 CloudBees CI,它的特点与优势,以及其如何与 Atlassian 的 Jira、Confluence 等产品集成。欢迎阅读!

演讲回顾

如何为大规模研发团队加速 CI 构建,实现高效流水线

大家好,我是 CloudBees 亚太区资深解决方案工程师杨海涛。很高兴参与今天的活动,也感谢龙智的邀请。


我的演讲将分为三部分。首先,我会简要介绍一下我的公司——CloudBees 公司,包括我们的主要产品。接下来,我将详细介绍企业级 Jenkins——CloudBees CI。最后,我将分享 CloudBees 如何与 Atlassian 平台结合使用。

CloudBees 公司及产品简介


在国内,大家可能对 CloudBees 还不太熟悉。其实,CloudBees 是 Jenkins 最主要的贡献者。事实上,Jenkins 80%的代码由 CloudBees 提供,并且许多大家熟悉的 Jenkins 插件也是由 CloudBees 开发的。由于多年来我们一直是 Jenkins 的主要开发者,我们深刻了解如何使 Jenkins 变得更强大、更符合当代企业的需求。


Jenkins 在市场上已经存在十多年,拥有庞大的生态系统,超过 1,800 个插件。Jenkins 拥有活跃的全球社区,超过 70%的开发者正在使用。最近发布的市场专家机构的报告显示,Jenkins 的用户数量仍在增加。

为什么 Jenkins 能够保持如此长时间的活力呢?主要原因在于它能够兼容各种硬件,平台,操作系统,中间件和工具。

企业级 Jenkins——CloudBees CI


也许大家会有疑问,既然 Jenkins 本身功能如此强大,为什么我们还需要 CloudBees?使用免费的开源 Jenkins 不就足够了吗?从 Jenkins 的功能来看,它确实拥有许多功能和插件,能够完成各种工作。然而,请记住一点,和所有的免费、开源软件一样,Jenkins 注重于其核心功能,却难以满足大型企业的非功能性需求。让我们来看一下一些常见情况。



最常见的情况是,企业为了减少管理控制器的数量,将所有内容放在一个单一控制器上,我们称之为“巨型 Jenkins”。这种情况可能会引发什么问题呢?当 Jenkins 规模庞大时,兼容性问题几乎无法解决。在升级 Jenkins 时,由于这些问题,它可能会直接崩溃。


另一个问题更为严重,就是当所有内容都集中在一个 Jenkins 上时,它可能成为企业中最大的单点故障因素。一旦它宕机,所有工作都会停滞。因此,高可用性和负载均衡也成为一个严重问题。


有些企业选择另一种方式,为每个团队使用一个 Jenkins,这样确实可以增加每个团队的自主性,但也会带来其他问题。如何了解各个 Jenkins 实例的当前状态是否稳定?如何集中、高效地管理更多的实例?


共享资源也是一个挑战,例如 Jenkins 的代理无法共享。对于有限的资源,如何通过代理在不同 Jenkins 实例之间实现资源共享?此外,如果有新的团队,如何快速为他们创建新的 Jenkins 实例并赋予高度自主权?


您可能还会面临其他问题,如安全性问题,如何确保所有用户只能执行其被授权执行的操作?还有技术支持问题,使用开源软件和大量的开源插件,一旦出现问题,谁来提供支持?


在您开始使用 Jenkins 时,特别是在大型企业使用一段时间后,您可能会发现到了一个瓶颈期——难以真正将其扩展到整个组织的结构中。这就是为什么大中型企业需要一个企业级 Jenkins——CloudBees。



在 CloudBees CI 中,我们究竟增强了哪些方面,才使其成为一款适用于企业级产品? 


首先,如果您目前使用的是开源 Jenkins 实例,那么每个 Jenkins 都是单兵作战。而在 CloudBees CI 中,我们增加了一个中心的管理节点 Operations Center。通过 Operations Center,您可以一键创建新的 Jenkins 实例,也叫 Controller。CloudBees CI 还可以在 Kubernetes 中动态生成 Agent,并在在所有的 Controller 中进行共享。此外,您也可以创建新的 Agent 和 Controller,部署在其他裸金属、虚拟机或容器中。 


这是一个重要且最显著的不同之处。Jenkins 是单兵作战,而 CloudBees CI 则采用了集群作战的模式。您可以创建任意数量的实例,但它们都受到一个中心的管理。



通过这种方式,可以实现很多期望的目标。例如,一键创建新的 Jenkins 实例,仅需几分钟即可完成。创建完成后,每个团队都可以自主控制自己的 Jenkins 实例。同时,这些实例都会有一个中心的管理点,并由 CloudBees CI 进行整体管理。通过共享 Agent,可以在整个集群范围内充分共享有限或受限的资源。



刚刚提到 CloudBees CI 的重要优势在于集群作战,但我们的创新不仅于此。在 2023 年,我们推出了迄今为止最重要的 Jenkins 价值中心——实现高可用和高性能的 Jenkins。


那么高可用的真正能力是什么呢?它除了可以让所有 Jenkins 实例并肩作战外,同时赋予其更强大的功能——分身术。


在过去,Jenkins 实例是在一个容器或虚拟机中运行的进程,现在我们可以更加复杂地设计它的结构,加上前端的负载均衡,后面可以有任意多的实例,它们可以共同发挥作用。这样做的好处在于,通过负载均衡器可以实现负载均衡、避免单点故障,并确保其具有更稳定、更优越的性能。如果您的环境安装在像 Kubernetes 这样的平台上,那么可以通过滚动升级实现零停机的要求。此外,还可以通过监控 CPU 等资源使用来实现节点的弹性伸缩,或者手动进行弹性伸缩。


所有这些都可以实时同步,因为 CloudBees 与 Jenkins 是共享的,并且具有共享内存和数据的机制。



Jenkins 的插件数量庞大,并且插件之间关系复杂。当日常升级 Jenkins 时,就会发现一个问题——很难找到合适的插件版本来保证所有的插件都能正常工作。尤其是在插件比较多的情况下,这个问题就会更加明显,有时甚至可能导致生产系统崩溃。


因此,我们为企业级客户提供了 Beekeeper,这也是 CloudBees 的核心优势之一。Beekeeper 可以帮助客户管理插件,包括验证与产品升级等。


也许有人会问:“1,800 个插件都能管理吗?”实际上,在这 1,800 个插件中,最常用的可能只有两三百个,目前 CloudBees 只需将这些最核心的插件放入自己的管理池中,便可以满足大多数用户的需求。这样,每次进行升级时,我们不仅提供新的 Controller 版本或 Jenkins 版本,同时还会将所有与之相兼容的核心插件一并发布给客户,而这些插件的版本兼容性都是我们事先验证过的。


通过这种方式,客户无需担心插件之间的冲突问题,也无需担心与 Jenkins 本身的兼容性问题,因为 CloudBees 会协助客户进行全面管理。



因此,CloudBees 能够为客户提供可靠的支持。我们的技术支持团队由经验丰富、拥有多年 Jenkins 经验的专家组成,能够在全球范围内提供 7x24 小时的技术支持。



在提及轻松扩展时,相信大家会想到一个问题:在轻松扩展完之后,几十个甚至上百个实例该如何管理?也就是说,在集群作战模式下,CloudBees CI 如何管理所有的实例?


在 CloudBees 的 Operation Center 中,提供了一个中心管理工具。通过此工具,您可以使用过滤器选择所有的 Controller 与实例,也可以根据条件选择要执行操作的实例。选择完成后,您可以进行各种日常任务,如备份、安装、执行脚本、重启和升级等。您可以将这些操作编辑在一起,然后决定如何执行。例如,您可以将其作为日常运维任务定期执行,或通过其他操作进行触发执行。


通过这种方式,您可以高效、自动化地管理 Jenkins。举个例子,我们有一位大客户,他们目前已经运行了上千个实例,但仍然运行非常稳定,集中管理的方式在此起到了关键作用。通过集群中心的管理方式,能够获得整个集群范围内的可见性与可维护性。



在有很多 Jenkins 实例的情况下,该如何进行角色权限控制?在开源的 Jenkins 中,每个 Jenkins 实例的权限管理都受限于自身,无法严格控制所有角色。而 CloudBees CI 采用基于角色的权限控制管理,引入角色和群组的概念,可以去定义各个层级的群组,包括集群, 文件夹, 单个 Jenkins 实例等。如果您使用的是 LDAP 或 AD 等外部工具,也可以将其连接在一起,直接映射到 CloudBees CI 中。


CloudBees CI 的权限控制细化到什么程度呢?例如,您希望每个开发团队的成员只能访问自己的实例。他们可以看到自己或其他人的实例,可以看到其他组织,但不能对其进行操作。通过 CloudBees CI 的角色权限管理模型,能够轻松配置,实现细化的全局权限管理。



以上是 CloudBees CI 比较核心的功能。现在,我再给大家介绍另外两款产品。


如果考虑到流程的持续改进,我们还有另外一款产品——CloudBees CD/RO。它的主要功能是实现软件在生产环境中的持续部署,以及软件发布全生命周期的流程管理。它更像是工作流工具,只不过面向的是企业应用的发布流程。通过此工具,我们可以协调所有的基础设施,包括在开发过程中使用的不同工具、相关的流程、不同角色的审批及参与,通过调动所有的这些工作,将整个软件开发流程以可视化的方式呈现,并进行整体控制。


CloudBees CD/RO 有一个重要功能,它可以和 CI 结合,收集整个软件开发过程中相关的数据模型。另外,也可以从外部系统中收集相关数据。整合数据后,它将为大家呈现多样化的数据分析图表,包括 Dora 等数据分析图表或定制数据报表。



接下来我要介绍的是 CloudBees 的下一代产品。大家都知道,现在企业都在关注以开发者为中心的内部开发平台。CloudBees 也开发了相应产品,叫做 CloudBees Platform。它能够无缝地调动和控制 Jenkins 和 CloudBees,让传统应用在此平台上能够顺畅运行。更重要的是,如果您正在开发云原生的应用,此平台也提供无缝的 DevSecOps 环境,帮助您快速构建自己内部的开发平台。所以,这其实就是我们 CloudBees 基于 TEKTON 打造的平台构建工具。


目前,CloudBees Platform 的重要优势在于它的授权同时包括了 CloudBees CI 和 CloudBees Platform。对于现有的 CloudBees CI 客户,以及正在使用 Jenkins 并想要升级到 CloudBees CI 的客户来说,这意味着一次升级(从 Jenkins 升级到 CloudBees CI),您不仅能拥有一个企业版 Jenkins,同时还能拥有一个面向未来的企业内部的开发基础平台——CloudBees Platform。


由于 CloudBees 是 Jenkins 的主要贡献者,所以我们未来还将在此平台为客户提供一个重要且独特的创新——类似 SaaS Jenkins 的体验。Jenkins 的任务例如流水线等,都可以在此平台上运行。在未来,后台可以运行一个类似在线 Jenkins 实例,帮助您把任务运行完成,免去维护本地 Jenkins 或 CloudBees CI 的工作量。

CloudBees + Atlassian



Jenkins 本身拥有丰富的插件,能够无缝集成 Atlassian 产品,包括 Jira、Confluence 和 Bitbucket 等,都有现有的插件支持。而企业级 Jenkins——CloudBees CI 与 Jenkins 别无二致,其完全遵循 Jenkins 的开放理念。因此,Jenkins 现有的所有插件都可在 CloudBees CI 中直接运行。



举例来说,CloudBees CI 与 Jira 的集成能够实现在编译结果中展示 Jira 信息、在 Jenkins 任务中 引用 Jira 信息,以及在 Jenkins 流水线中更新 Jira 信息,并且操作都非常便捷。


以上就是我演讲的全部内容,非常感谢大家的聆听。再次提醒大家,龙智目前是 CloudBees 在国内的合作伙伴,如果您对我们的产品有任何疑问或想了解更多信息,请随时联系龙智,谢谢大家!

用户头像

还未添加个人签名 2021-05-18 加入

分享DevSecOps解决方案最新动态,帮助您学习与使用Atlassian, Perforce, Whitesource, Cloudbees及龙智自研产品,实现软件研发的高度协同与自动化,提高交付效率与质量,并确保开发过程可追溯、可度量。

评论

发布
暂无评论
演讲回顾:如何为大规模研发团队加速CI构建,实现高效流水线_DevSecOps_龙智—DevSecOps解决方案_InfoQ写作社区