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

近日,龙智联合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在国内的合作伙伴,如果您对我们的产品有任何疑问或想了解更多信息,请随时联系龙智,谢谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM App SDK:LangChain vs. LlamaIndex

在Why RAG is big中,我表示支持检索增强生成(RAG)作为私有、离线、去中心化 LLM 应用程序的关键技术。 当你建造一些东西供自己使用时,你就是在孤军奋战。 你可以从头开始构建,但在现有框架上构建会更有效。 NSDT工具推…

Java多线程--避免同步机制带来的死锁问题及用Lock锁解决线程安全问题

文章目录 一、死锁(1)说明(2)案例1、案例12、案例23、案例3 (3)诱发死锁的原因及解决方案1、诱发死锁的原因2、避免死锁 二、JDK5.0新特性:Lock(锁)(1)介绍(2…

小白水平理解面试经典题目_数组类LeetCode 118 Pascal‘s Triangle【回归解法】

LeetCode 118 生成杨辉三角(Pascal’s Triangle) 小白渣翻译 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 例子 这里是小白理解 那么这种题目一上来看&#xf…

4-树-合并两个有序链表

这是树的第4篇算法,力扣链接。 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入&#xf…

Linux下gcc的使用与程序的翻译

gcc和程序的翻译过程 gcc介绍程序的翻译过程预编译编译汇编链接 命令行式宏定义 gcc介绍 gcc是一款编译C语言编译器,可以把我们用vim写的代码编译成可执行程序。编译C用g进行编译,C的文件后缀是test.cc或test.cpp或test.cxx 如果要安装g就执行以下命令 …

C# winform 多语言(json)方式实现

前后对比 使用nuget json工具包1.总体思路 创建对应的json字典对照表 { "测试":"Test", "语言":"Language", "设置":"Set", "中文(默认)":"Chinese (default)", "英文":"E…

【HarmonyOS应用开发】ArkTS 属性动画的使用(十二)

一、概述 属性动画,是最为基础的动画,其功能强大、使用场景多,应用范围较广。常用于如下场景中: 一、页面布局发生变化。例如添加、删除部分组件元素。二、页面元素的可见性和位置发生变化。例如显示或者隐藏部分元素&#xff0…

CANoe学习笔记——窗口类型

CANoe中的窗口类型,共分为三种 1:MDI windows 2:Standard Windows 3:Docking Windows 窗口有多种类型,每种类型都定义了特定的窗口行为。通过点击窗口顶部的区域,可以更改窗口类型。 如下图&#xff0…

Python的requests库与HTTP代理的使用:魔法般的网络探险之旅

嘿,各位魔法探险家们!今天我们要一起探索Python的requests库与HTTP代理的神奇组合,开启一段魔法般的网络探险之旅! 首先,我们要明白什么是requests库。简单说,requests库就是Python中的魔法飞毯&#xff0…

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识,同学们也可以通过公众号菜单栏查看! 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…

MySql主从同步,同步SQL_ERROR 1032解决办法

1.登录从库 mysql -u root -p 2.输入命令查看状态 SHOW SLAVE STATUS\G; 3.找到对应的错误数据位置 Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: app_push_centerReplicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Tabl…

“欢天喜地迎新春”下姜村邻里守望写对联活动

卯兔追冬去,辰龙报春来。空谷幽香谱佳期,红联金句寄吉祥。春联是我国特有的文学形式,贴春联是继承传统习俗的一种方式,是对祖先的尊敬,对传统的继承。春节前夕,家家户户贴上红红的春联,一副副透…

西圣Olite开放式耳机持续100+天霸榜:品质优势再掀数码狂潮

随着开放式耳机的市场竞争加剧,用户对耳机的音质和配置要求越来越高。而西圣开放式耳机的不断推陈出新,正是对客户需求的完美回应!西圣开放式耳机,在现在鱼龙混杂的市场上,能够获得着卓越的研发成果并且还在不断的追求…

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库

目录 参考前面发的几篇文章http识别车牌,sqlite3数据库、摄像头的文章 步骤 部分代码 新建一个项目,加入前面用到的http和image两个文件,和加入用到的模块和头函数和成员,加入前面用到的全局变量 配置ui界面 在构造函数中初…

Qt5 基于OpenGL实现六轴机械臂三维仿真

需求 在Qt中通过OPenGL方式加载三维模型STL文件,然后将多个结构的STL文件类型的模型进行组装,形成6轴机械臂三维模型的显示,并且可以对每个关节进行关节角度的控制。 新建一个C类STLFileLoader,用于加载STL文件,并进…

IP协议(2) 和 数据链路层协议基础

IP协议续 1.路由选择 在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择 举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地 路由的过程,其实就是样子问路的过程 1.当IP数据包到达路由器的时候,会查看目的IP 2.路由器…

Jmeter高级使用

文章目录 JMeter之计数器JMeter之集合点JMeter之断言JMeter之动态关联后置处理器:正则表达式提取器 JMeter之分布式测试JMeter之组件执行顺序元件的作用域元件的执行顺序配置元件Http Cookie管理器 多协议接口的性能测试Debug采样器Http请求中文乱码的解决Post参数设…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)

专属领域论文订阅 关注{晓理紫|小李子},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 为了答谢各位网友的支持,从今日起…

Java_简单模拟实现ArrayList_学习ArrayList

文章目录 一、 了解线性表和顺序表区别1.线性表2.顺序表 二、模拟实现1.定义接口2.定义MyArrayList3.成员变量以及构造方法4.实现打印数组5.实现add方法6.实现查找某个数是否存在contains或者某个数的下标indexOf7.获取或更改pos位置的值 get和set8.获取数组大小 size9.删除某个…

Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解 文章目录 Git在实战项目开发使用功能学习01.Git 初识02.Git 仓库03.Git 的三个区域04.Git 文件状态05.Git 暂存区作用06.练习-登录页面07.Git-切换版本08.删除文件09.忽略文件10.分支的概念11.练习-登录 bug 修复12.分支-合并与删除13.分支-合并与…