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

news2024/12/23 18:25:46

近日,龙智联合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.coloradmin.cn/o/1428969.html

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

相关文章

Mysql的BufferPool

Mysql的BufferPool Mysql是一个存储数据到磁盘的进程,但是磁盘的速度难以与CPU相比,所以InnoDB存储引擎在处理客户端的请求时,当需要访问某个页的数据时,就会把完整的页的数据全部加载到内存中。将整个页加载到内存中后就可以进行…

C++初阶之类与对象(上)详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.前言 二.类的定义和使用 2.1类的引入 2.2类的定义和访问限定…

进程中线程使用率偏高问题排查

1. top命令查看CPU使用率高的进程 2. top -H -p 15931 查看进程下的线程 3. printf "%x\n" 17503 线程PID 10进制转16进制 0x445f 4. jstack -l 15931 导出java进程栈信息,里面包含线程nid0x445f和所在的类 第二种: Arthas方式快捷明了 结合代…

069:vue中EventBus的使用方法(图文示例)

第069个 查看专栏目录: VUE ------ element UI 本文章目录 示例背景示例效果图示例源代码父组件:子组件A:子组件B:eventbus/index.js: EventBus的基本使用方法: 示例背景 在Vue中,使用EventBus可以实现组件…

布隆过滤器的概述和使用

1 布隆过滤器概述 1.1 概述 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是由一个很长的二进制向量(数组)和一系列随机映射函数(hash函数)组成,它不存放数据的明细内容&#xff0…

C语言中的指针详解

大家好,今天给大家介绍C语言中的指针详解,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 **指针是C语言中的一个重要概念,它提供了一种直接访问内存地址…

【学员分享-考试心得】国产数据库潜力无限,云贝教育OBCP认证培训帮您解难题

近年来,随着国产化转型的推进,国外数据库的岗位需求逐渐减少,让许多IT从业者倍感压力。在这种情况下,了解国产数据库成为了求职市场上的竞争力。云贝老师们将聚焦于OceanBase、PostgreSQL、TDSQL等IT培训,探讨其对国产…

LED点阵屏(基于51单片机)

师从江科大 LED点阵屏 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。 LED点阵屏分类 按颜色:单色、双色、全彩 按像素:8*8、16*16等(大规模的LED点阵通常由很多个…

SpringBoot实战2

目录 1.如何返回两个类型的数据?User和Booth 2.如何使用MyBatis遍历一个数组进行查询? 3.前端要的数据太多太杂,我们拼接多个List,前端找数据困难,浪费时间。因此我们进行三表联表查询。 1.首先创建一个vo包&#x…

【数据结构】双向链表 超详细 (含:何时用一级指针或二级指针;指针域的指针是否要释放)

目录 一、简介 二. 双链表的实现 1.准备工作及其注意事项 1.1 先创建三个文件 1.2 注意事项:帮助高效记忆 1.3 关于什么时候 用 一级指针接收,什么时候用 二级指针接收? 1.4 释放节点时,要将节点地址 置为NULL&#xff0…

FANUC机器人开机时无法进入系统,示教器黑屏故障处理总结

FANUC机器人开机时无法进入系统,示教器黑屏故障处理总结 故障描述: FANUC机器人开机时,示教器在初始化时显示:EMAC initial call failed(示教器上电时会进入boot画面,左上角会出现一些白色的英文提示&#…

项目安全-----加密算法实现

目录 对称加密算法 AES (ECB模式) AES(CBC 模式)。 非对称加密 对称加密算法 对称加密算法,是使用相同的密钥进行加密和解密。使用对称加密算法来加密双方的通信的话,双方需要先约定一个密钥,加密方才能加密&#…

openGauss学习笔记-212 openGauss 数据库运维-日志参考

文章目录 openGauss学习笔记-212 openGauss 数据库运维-日志参考212.1 日志类型简介212.2 系统日志212.3 操作日志212.4 审计日志212.5 WAL日志212.6 性能日志 openGauss学习笔记-212 openGauss 数据库运维-日志参考 212.1 日志类型简介 在数据库运行过程中,会出现…

Java面试——计网篇

一、基础篇 1、 TCP/IP 网络模型 对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多…

RDBMS-MySQL高级

数据操作语句(DML)多表/关联查询Mysql中的函数事务执行流程数据库的备份与还原数据库表设计三范式 一、数据操作语句(DML) 插入数据 语法: 1.1插入(insert [into])或添加一条数据 -- 指定列…

excel统计分析——卡方独立性检验(下)

参考资料:生物统计学 书接上文:https://blog.csdn.net/maizeman126/article/details/135893731 2、配对列联表 配对设计的数据,进行列联表检验时,采用McNemar-Bowker检验法进行检验。检验统计量为: 自由度dfk(k-1)/2…

CSS要点总结

一、CSS 快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>css 快速入门</title><!-- 解读1. 在 head 标签内&#xff0c;出现了 <style type"text/css"></style…

Spring Framework(6.x)源码编译与源码阅读入门

目录 一、Spring Framework 源码获取问题 1.1 Spring Framework 官网 1.2 Spring Framework 源码地址 1.3 关于访问不了GitHub 官网的解决方案 1.3.1 修改本地hosts文件 1.3.2 GitHub520 1.3.3 Gitee 导入 二、Spring Framework 源码编译 2.1 环境说明 2.1.1 JDK版本 …

代码随想录算法训练营29期|day38 任务以及具体安排

第九章 动态规划part01 509. 斐波那契数 //非压缩状态的版本 class Solution {public int fib(int n) {if (n < 1) return n; int[] dp new int[n 1];dp[0] 0;dp[1] 1;for (int index 2; index < n; index){dp[index] dp[index - 1] dp[index - 2];}r…